This question has been asked on this forum quite a few times this week. Search for "--limit" among recent posts if you don't mind.
Thanks! On Fri, Jul 18, 2014 at 6:31 PM, <[email protected]> wrote: > Background > We use ansible for all our automated deployments, and have had success in > managing separate environment configuration using group vars. Our > inventories (running locally and also on ansible tower) have hosts > belonging to groups based on application and environment -- for example, we > might run something like this: > > ansible-playbook -i inventories/non-prod -l'env-qa:&backend' backend/ > deploy.yml > > ... to deploy to all hosts belonging to the backend group and the env-qa > group, and to pull in config values from group_vars/env-qa. > > Recently we've decided to use a single cluster of machines for deploying > applications which belong to different environments - for example, with > apps like Storm, you can run two different qa environments on the same > cluster. Where we're running into problems is that even if we set the limit > flag on ansible-playbook to 'env-qa-1', we're still getting all the > variables belonging to 'env-qa-2' when we actually run the playbook. I've > simplified this below. > > > Files: > > inventories/test > [group-a] > host1 > > [group-b] > host1 > > [app] > host1 > > > group_vars/group-a > --- > base_directory: /opt/app/a/ > > > group_vars/group-b > --- > base_directory: /opt/app/b/ > > > test/test.yml > --- > - name: test script > hosts: all > tasks: > - debug: msg="deploying to {{ base_directory }}" > > > > ansible-playbook commands: > > $ ansible-playbook -i inventories/test -l'app:&group-a' test/test.yml > > > PLAY [test script] > ************************************************************ > > > GATHERING FACTS > *************************************************************** > ok: [host1] > > > TASK: [debug msg="deploying to {{base_directory}}"] ********** > ok: [host1] => { > "msg": "deploying to /opt/app/b/" > } > > > PLAY RECAP > ******************************************************************** > host1 : ok=2 changed=0 unreachable=0 failed=0 > > > $ ansible-playbook -i inventories/test -l'app:&group-b' test/test.yml > > > PLAY [test script] > ************************************************************ > > > GATHERING FACTS > *************************************************************** > ok: [host1] > > > TASK: [debug msg="deploying to {{base_directory}}"] ********** > ok: [host1] => { > "msg": "deploying to /opt/app/b/" > } > > > PLAY RECAP > ******************************************************************** > host1 : ok=2 changed=0 unreachable=0 failed=0 > > > > expected behavior: > > limiting to group-a returns > "msg": "deploying to /opt/app/a/" > > > > actual behavior: > > limiting to group-a returns > "msg": "deploying to /opt/app/b/" > > > In every other case where we've set a limit, ansible has pulled in the > proper group_vars file. Am I crazy to assume that limiting an inventory to > a particular group also limits the group_vars/ files ansible loads? I can't > think of a reason why you'd want other files (besides *all*) from > group_vars/ loaded if you've explicitly limited the inventory to a > particular group. > > Is there a better way of going about this? > > -- > You received this message because you are subscribed to the Google Groups > "Ansible Project" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit > https://groups.google.com/d/msgid/ansible-project/52a4f118-550b-445d-b544-7167c3fcc095%40googlegroups.com > <https://groups.google.com/d/msgid/ansible-project/52a4f118-550b-445d-b544-7167c3fcc095%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "Ansible Project" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgxkKXDPGpraA1PkfttKavGw-VA1fOTMDP209iQk5_bYCg%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
