I don't feel the cwd should matter in most cases and it should not be
significant.

Ansible already looks for group_vars relative to the playbook dir, so
keeping your top level playbooks in the same directory is recommended.


On Thu, Jul 17, 2014 at 9:21 AM, Michael Peters <[email protected]>
wrote:

> I do use roles rather extensively for configuration management tasks.
> But for other (more orchestration related) tasks it doesn't seem to
> make much sense or at least I'm not seeing how best to organize that.
> For a more concrete example I have some mysql databases, some acting
> as master nodes some as read-only slaves. There is a mysql role and a
> mysql slave role that takes care of making sure the servers are
> provisioned and configured correctly. But I also have a playbook used
> when setting up (or resetting) replication between a master and a
> slave. This playbook uses some local actions, delegate_to takes and
> some templates and variables from both of those other roles. So it
> doesn't really belong to either role and making it it's own role would
> involve duplicating the things it currently shares with those roles
> (for instance, roles can't share templates).
>
> But even turning all these orchestration playbooks into roles doesn't
> reduce the clutter at the top level since roles can't be executed by
> themselves. I'd still need lots of top-level playbooks that called
> these roles. And I'm not sure different repos really help that much
> either. I'm trying to keep things simple and reduce copy-paste. Having
> things in separate repos would increase the amount of things that need
> to be copied between those repos.
>
> A lot of these problems could be solved if ansible could look for
> group_vars in the CWD. Would that cause other problems?
>
> On Wed, Jul 16, 2014 at 7:52 PM, Michael DeHaan <[email protected]>
> wrote:
> > I'd consider using roles and just making your role path configurable,
> which
> > would still make it easy to keep all your plays in whatever location you
> > like.
> >
> > (You could even keep roles in different repos, etc)
> >
> >
> >
> > On Wed, Jul 16, 2014 at 5:57 PM, Michael Peters <
> [email protected]>
> > wrote:
> >>
> >> I'm looking for advice about how to organize my playbooks. Not so much
> >> the content as their structure on the file system.
> >>
> >> Currently I have all of my configuration management (role-level)
> >> playbooks at the top level with things like common.yml, app.yml,
> >> db.yml, etc. These correspond directly to roles and are pretty much
> >> just like the examples in
> >> http://docs.ansible.com/playbooks_best_practices.html#directory-layout
> >> (along with a site.yml to run through them all for the whole cluster).
> >>
> >> But I also have a bunch of playbooks for doing various things like
> >> rolling upgrades of certain applications, updating configurations of
> >> other applications, creating DB snapshots and replication, AWS server
> >> creation, etc. I've started to accumulate a lot of these and have
> >> started to put them into a plays/ directory organized into per-topic
> >> subdirectories. This involved a little bit of rewriting so that all of
> >> the paths (files, templates, etc) need "../../" path prefixes since
> >> they were being loaded relative to the playbook and not the cwd. Not
> >> too bad.
> >>
> >> But this means that the variables in group_vars, host_vars, etc aren't
> >> loaded automatically. I've tried putting boilerplate "vars_files" to
> >> load everything it needs that looks something like this:
> >>
> >>   vars_files:
> >>     - ../../group_vars/all.yml
> >>     - ../../group_vars/{{ ec2_tag_environment }}.yml
> >>     - ../../group_vars/{{ ec2_tag_role }}.yml
> >>
> >> (where ec2_tag_environment and ec2_tag_role are facts provided by
> >> ec2.py that correspond to groups)
> >>
> >> Not only would that be annoying to have to copy/paste into each of
> >> these playbooks, but this doesn't quite seem to work. Variables loaded
> >> by vars_files don't seem to go into hostvars for that host. I assume
> >> they are just globally scoped but I have other plays and included
> >> files that rely on things to be in hostvars and I'd rather not rewrite
> >> those just because the playbooks moved around (and sometimes they
> >> can't be changed because they are included in top-level playbooks
> >> too). I guess changing paths to files seems reasonable when moving
> >> things, but not the scope of variables.
> >>
> >> So, what am I doing wrong? Should I just have dozens (and in the
> >> future likely hundreds) or playbooks littered at the top level? Could
> >> ansible look for group_vars in the CWD as well as the location of the
> >> playbook? Something else?
> >>
> >> Thanks,
> >>
> >> --
> >> 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/CAJQqANc0O8Ga42UxRLcgcJJrCcRGZ%3D8bj%3DSpEyNop5ftSMZXPw%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/CA%2BnsWgw78bwGP-f-YvMeyVBpEJM9WL9xw1eWYQryy1zMPbgYEw%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/CAJQqANdMCH0X_bYA5AQ0aPz4VJ6-vYOYxgZivJfE2FAJ67G2VA%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/CA%2BnsWgynSEY7yG2eAuXH5eT6exFsF%3DpeWPNHtAcc5JoytLZyUA%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to