On Thu, Jul 17, 2014 at 1:45 PM, Michael DeHaan <[email protected]> wrote: > I don't feel the cwd should matter in most cases and it should not be > significant.
But it does matter in some. I can't get playbooks that aren't in the same directory as group_vars to behave like those that are. And there's nothing in the documentation that makes this obvious as to why or that says that using subdirectories to organize playbooks is a bad idea. > Ansible already looks for group_vars relative to the playbook dir, so > keeping your top level playbooks in the same directory is recommended. Am I doing something wrong by having so many playbooks? This is a fairly smallish project with 20 roles, a site.yml, and 20+ other playbooks for orchestrating other common tasks. And that's not counting any of the multiple task files in roles that are included. That right there is getting close to 50 playbook files sitting at the top level if I did it that way. And this project is just getting started. Using the cwd as an extra path lookup seems like a pretty easy way to add this capability without any problems that I can see. > 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. -- 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/CAJQqANcSTPDQskMN0ZcXqBsywGhgQHoWL-k47znu3cNKEy2fuw%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
