I have a subset of these hosts that should receive additional roles.
[jenkins-slaves]
HostC
I have a Vagrantfile that I would like to use to set up one host of each category.
Including first playbook from the second one does not work, because I cannot parameterize the hosts when including a playbook.
What I would like to achieve is, when the “setup-qa-machine” playbook is changed, it does not require to change in the “setup-jenkins-slave” playbook, which would be the case if I repeated the common roles.
it feels a bit like I was not seeing the obvious right now, so any help is appreciated. Thanks!
We implemented this by having host files specific to an environment, so for example, a QA host file, a Prod host file, a Dev host file, etc. Then the groupings within the host file would be based off what they were used for, for example:
[wildfly_servers]
HostA
HostB
[activemq_servers]
HostB
[db_servers]
HostA
[akka_servers]
HostB
[php_servers]
HostA
[php_innovations_servers]
HostA
Then when calling the playbook, we just pull in the appropriate host file for the environment we want to have updated. Is this what you were talking about?
If I understand your question correctly, then why not just have two playbooks? We have an infrastructure.yml playbook which provisions a server for us. We also have another playbook which makes alterations to that server dependent on its role. For example, in our case when we provision a Jenkins server, I run the infrastructure.yml playbook which targets all servers (qa-machines in your case) in its host specification (remember that you can use ansible’s limit attribute to narrow the scope of the playbook from the command line) and then I run jenkins.yml afterwards which targets just the jenkins server (jenkins-slaves in your example).
Not exactly, however I realize that by “double-assigning” hosts in my inventory I have kind of solved my problem already. The issue is that my “second” hosts file / inventory is currently generated by Vagrant, so I need to create the appropriate groups there, also.
Like i suspected the problem lies more with my use of Vagrant, rather than Ansible.
This is exactly what I am doing, except I need this to happen also when using Vagrant by assigning groups properly when I have the inventory generated by it (see above comment).
I am still deliberating if I should maintain the second inventory directly, or have it generated…
Thanks for your help, much appreciated!