How to Play with particular group using Ansible Playbook
Solution 1
Original question was: --limit option is not working
By calling ansible-playbook --limit 'PM' akana-installation.yml
you tell ansible to limit servers to the hosts that are in PM group.
In your case it will be xyz.example.com
.
Keep in mind that if you have this server in several groups, as you do, it will still be a member of that groups.
Your limited inventory will become:
[PM]
xyz.example.com ansible_connection=ssh
[ND]
[CM]
xyz.example.com ansible_connection=ssh
And ansible-playbook will execute every play in your playbook that is applicable for asma.example.com.
In your case:
Play 'PM:ND:CM'
[xyz.example.com]
Play 'PM'
[xyz.example.com]
Play 'ND'
skipping: no hosts matched
Play 'CM'
[xyz.example.com]
Solution 2
Create dir for playbook files:
mkdir playbooks
Split your playbooks into separate files, eg. playbooks/pm.yml:
- hosts: PM
remote_user: root
tasks:
{some thing}
Create file all.yml
- hosts: PM:ND:CM
remote_user: root
tasks:
{some thing}
- include: playbooks/pm.yml
- include: playbooks/nd.yml
- include: playbooks/cm.yml
Now You have separate logic and You can play all with command:
ansible-playbook all.yml
or run separate command:
ansible-playbook playbooks/pm.yml
or
ansible-playbook playbooks/nd.yml
KishoreReddy
By Day: Lazy code writer, Active Quora Reader :), StackOverflow follower By Night: Chatter, Movie lover By weekend: Searching for fun But occasionally learning new technologies and concepts.
Updated on August 04, 2022Comments
-
KishoreReddy over 1 year
Ansible version: 2.1.0
My ansible hosts file is:
[PM] xyz.example.com ansible_connection=ssh [ND] pqr.example.com ansible_connection=ssh [CM] xyz.example.com ansible_connection=ssh pqr.example.com ansible_connection=ssh
And playbook is:
- hosts: PM:ND:CM remote_user: root tasks: {some thing} - hosts: PM remote_user: root tasks: {some thing} - hosts: ND remote_user: root tasks: {some thing} - hosts: CM remote_user: root tasks: {some thing}
And I am running playbook with the following command:
ansible-playbook --limit 'PM' akana-installation.yml
But still the playbook is playing with all hosts, it means
Play 'PM:ND:CM' Play 'PM' Play 'ND' Play 'CM'
those all plays are playing. Please help me to resolve this.
What I need is: While executing playbook I will give group name, that only group should play, so please let me know is there any other way.
-
Kishore Reddy almost 8 yearsYes, you are right that's what happening to me. But I want to play with particular group hosts, how can I achieve this?
-
Konstantin Suvorov almost 8 years@KishoreReddy, this is not how thing works in ansible. You can limit hosts (as you do with
--limit
switch), but it will not limit plays. If you want to limit plays, consider separating them to different playbooks and include them into the main playbook (see example: site.yml and webservers.yml). Or use tags.