Hey Byron, I'm using Ansible with multiple environments daily and it's very easy once you unlearn what Ansible documentation presents as a best practice. :-)
First, forget about /etc/ansible/ directory and its contents. Instead, in your home directory create separate directories, each one for a different "environment" - production, staging, testing, etc. For example: ~/src/projects/example.com/production/ ~/src/projects/example.com/staging/ Additionally create a separate directory for all of your playbooks that will be applied to both environments: ~/src/projects/example.com/playbooks/ Now, cd into one of the project directories (let's say ~/src/projects/example.com/staging/) and assume that you work from there. The same steps should be performed in the other project directory. Create ansible inventory and other required directories, for example: ansible/inventory/hosts ansible/inventory/group_vars/all/ ansible/inventory/group_vars/group/ ansible/inventory/host_vars/<hostname>/ ansible/roles/ ansible/playbooks/ In the project directory, create 'ansible.cfg' file with contents: [defaults] inventory = ansible/inventory roles_path = ansible/roles/ You can add any variables from /etc/ansible/ansible.cfg that you want, just make sure that it points to your local project directory instead of the /etc/ansible/ directory. Put your playbooks and roles in previously created directories. It's easier if you put them in a shared common directory and symlink them to project directories. Now, when you want to work in a staging environment, or production environment, all you need to do is cd into it and ansible should (using local ansible.cfg file) automatically use that environment. So for example to run your main playbook, run: ansible-playbook ansible/playbooks/site.yml -l host And to switch to production environment, run: cd ../production These environments should be completely separate and should use different hosts. You could try and combine different parts of the inventory between them, but it might get tricky. Regardless, you should use the same set of playbooks and roles in both environments to be sure that staging environment reflects your production environment. Only think that should be different is contents of the 'ansible/inventory/' directory, if needed. Try it out a couple of times and I think that you will like it. :-) Cheers, Maciej On Sun, Feb 14, 2016 at 9:23 PM, Byron Mabbett <[email protected]> wrote: > HI All, > First post and we are looking to implement Ansible into a new cloud > environment for multiple legacy systems. > > Sorry but there is a bit of a story first and this is more a setup/component > architecture question as we have a security constraint that production and > non-production data centers can never talk to each other. Meaning components > such as version control and configuration management have to have two > instances (prod and non-prod) with separate login's etc and syncing taking > place between them. > > I think this is mad, and have managed to talk them down to have only one > version control instance. > > However, compromise was a prod and non prod Ansible, which we can sort of > justify, as we have a lack of maturity with tools as we are just starting to > implement Ansible. > > Do others have experience in running two instances of Ansible, and keeping > common config in sync? > > eg: > 1. One source repository for Ansible config containing both prod and > non-prod config > 2. Two source repository's for Ansible config, one prod and one non-prod > config > > Any steer's appreciated. > > Cheers > Byron > > -- > 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/ea685c2a-0084-49b6-b692-1934c366d45f%40googlegroups.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/CAEnKK1yswcjTa2jX6SqD9pCDmya74yPOH3yvk_JNPXSRSxpwLA%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
