I like that idea. <rant> Right now we're in a transition phase because I've inherited a horrible Puppet configuration that does unspeakably stupid/evil things. I actually have a rudimentary inventory script that polls puppetdb - eventually I'll put that monstrosity to rest, but for now it's convenient. Right now I still need to pass in the deploy_env variable because some configurations require it and I haven't gotten around to having the inventory script define them, but once that's in place I'll definitively go with your suggestion and make environment-specific inventories. </rant>
On Tue, Jun 24, 2014 at 12:08 PM, Michael DeHaan <[email protected]> wrote: > " > - hosts: [ '{{ deploy_env }}-bal' ] > " > > This is gross and I would recommend not doing this. > > Instead consider seperating your different environments into different > inventory files (-i production), and having the host group just named "bal" > in this case. You can still put nodes in different groups and keep your > group_vars/ and host_vars/ directories all together. > > > > > On Tue, Jun 24, 2014 at 11:13 AM, Claus Strommer <[email protected]> > wrote: > >> d'oh! I should have known that. Thanks a bunch! >> >> >> On Tue, Jun 24, 2014 at 11:05 AM, Michael Peters < >> [email protected]> wrote: >> >>> When inside the {% %} part you are inside of jinja and don't need >>> special syntax to tell it that your using jinja variables. Something >>> like this should work: >>> >>> {% for host in groups[deploy_env + '-web'] %} >>> server {{ host }} {{ host }}:80 >>> {% endfor %} >>> >>> On Tue, Jun 24, 2014 at 10:48 AM, Claus Strommer >>> <[email protected]> wrote: >>> > Hi there, >>> > >>> > I have a play with a role that creates a load balancer template. I've >>> > successfully tested it in my dev environment, using >>> > >>> > >>> > {% for host in groups['dev-web'] %} >>> > server {{ host }} {{ host }}:80 >>> > {% endfor %} >>> > >>> > >>> > the 'dev-web' group is defined in my inventory, as well as 'stage-web', >>> > 'prod-web', etc. What I'd like to do is change this template so that >>> it can >>> > be used in any environment. I am already passing a parameter upon >>> calling >>> > the play, --extra-vars "deploy_env=dev". In the play itself I can >>> use this >>> > variable to determine on which balancer the template gets applied, by >>> using >>> > something like this: >>> > >>> > >>> > - hosts: [ '{{ deploy_env }}-bal' ] >>> > serial: 1 >>> > vars_files: >>> > - /var/lib/ansible/vars/{{ deploy_env }}.yml >>> > roles: >>> > - role: "haproxy-webbal" >>> > >>> > >>> > However, if I try something similar in the template, e.g. >>> > >>> > >>> > {% for host in groups['{{ deploy_env }}-web'] %} >>> > server {{ host }} {{ host }}:80 >>> > {% endfor %} >>> > >>> > I get this error: >>> > >>> > >>> > fatal: [stage-webbal-06.aws.primal.com] => {'msg': "One or more >>> undefined >>> > variables: 'dict object' has no attribute '{{ deploy_env }}-varnish'", >>> > 'failed': True} >>> > >>> > >>> > It seems that {{ deploy_env }} is not being expanded, and it's being >>> taken >>> > as a literal. Is this because it's within the {% %} section? If so, >>> then >>> > what is the correct syntax for doing this? Alternatively, is there a >>> > cleaner way to approach 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/CABkDv%2B5o4bLiUiNgr-UxP9P8hWpe0SxkhPvhb-T25VrErrMvkw%40mail.gmail.com >>> . >>> > 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/CAJQqANcG1mjVJXe%2BtR9e6ssk1mivcvtdFce5tfWns4ydOnFrgg%40mail.gmail.com >>> . >>> 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/CABkDv%2B6vkXOH3_aMgfm8TCkgXCxZW9%3DyAuKA6m88QEBQDf78Kg%40mail.gmail.com >> <https://groups.google.com/d/msgid/ansible-project/CABkDv%2B6vkXOH3_aMgfm8TCkgXCxZW9%3DyAuKA6m88QEBQDf78Kg%40mail.gmail.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%2BnsWgzE-ac358mHiq7ejr6-fW-sxAvH-7xaonK97iBa34D1CA%40mail.gmail.com > <https://groups.google.com/d/msgid/ansible-project/CA%2BnsWgzE-ac358mHiq7ejr6-fW-sxAvH-7xaonK97iBa34D1CA%40mail.gmail.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/CABkDv%2B536OZNaC-m1A3mjVH_RNBbPRTXMwXhXz1-jfetuUsoMw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
