I am experiencing some strange behavior from what I understand to be applying tags to roles/dependencies. I wrote a facts plugin to gather information about a systems role, and it includes this in the playbook run. Each system runs a playbook on its own, only managing itself.
# ansible_local facts
127.0.0.1 | success >> {
"ansible_facts": {
"ansible_local": {
"host_roles": {
"roles": [
"APPSERVERS",
"COMMON",
]
}
}
},
"changed": false
}
# site.yml
---
- hosts: 127.0.0.1
connection: local
gather_facts: yes
sudo: yes
roles:
- { role: appserver, , when: "'APPSERVERS' in ansible_local.host_roles.roles" }
- { role: hadoop_jobtracker, when: "'HADOOP_JOBTRACKER' in ansible_local.host_roles.roles" }
# roles/appserver/meta/main.yml
---
dependencies:
- { role: managed_interface, tags=initial }
This is the simplified output of my setup. I have a server that is acting with a local run of a playbook, and gathers its roles, and then grabs the dependencies from its role to call the manage_interface role when its tagged as initial.
# command line
ansible-playbook site.yml --tags "initial"
The command runs only its tasks/main.yml and not the dependencies.
When I tried applying at the site.yml level things got really weird. It runs both the appserver and hadoop_jobtracker roles, seemingiy ignoring the "when" statements.
roles:
- { role: appserver, tags: ['initial'], when: "'APPSERVERS' in ansible_local.host_roles.roles" }
- { role: hadoop_jobtracker, tags: ['initial'], when: "'HADOOP_JOBTRACKER' in ansible_local.host_roles.roles" }
Are there some rules in which these can be applied properly, or am I hacking at the system and making trouble again?