I am wondering how can i use :

- meta: flush_handlers in a role. so that the handlers are executed 
immediately after a task in the role has changed. 

i have these tasks in a role: 

- name: key from MX
shell: cat /server/.ssh/id_dsa.pub
become: true
register: id_dsa_pub
when: inventory_hostname in groups['MX']
notify: add to authorized_keys 

- name: key from gateways 
shell: cat /root/.ssh/id_rsa.pub
become: true
register: id_dsa_pub
when: inventory_hostname in groups['GW']
notify: add to authorized_keys 

my site.yml is like this:
- name: apply common configuration to all nodes
hosts: all
remote_user:  ansible
become: true
tags: custom

tasks:
- meta: flush_handlers

roles:
- common

and i call the playbook like this:

ansbible-playbook -i inventory site.yml --limit='MX' 

i prefer this method to have to add a play to every hostgroup and is more 
generic as our users just call the playbook and limit to the group they 
want. 

the problem is that the keys from the MX are not added because of an 
undefined variable. 

PLAY [all] 
**********************************************************************************************************************************************************************************************************************************

TASK [test_role : key from MX] 
**************************************************************************************************************************************************************************************************************
changed: [testmx1]

TASK [test_role : key from gateways] 
********************************************************************************************************************************************************************************************************
skipping: [testmx1]

RUNNING HANDLER [test_role : add to authorized_keys] 
*********************************************************************************************************************************************************************************
fatal: [testmx1]: FAILED! => {"msg": "The task includes an option with an 
undefined variable. The error was: 'dict object' has no attribute 
'stdout'\n\nThe error appears to be in 
'/home/ansible/roles/test_role/handlers/main.yml': line 4, column 3, but 
may\nbe elsewhere in the file depending on the exact syntax problem.\n\nThe 
offending line appears to be:\n\n#\n- name: add to authorized_keys \n  ^ 
here\n"}

I would like not to have to fetch the remote authorized keys to localhost 
first but using

if i put these in a simple playbook (not a role) and add the flush_handler 
meta tag it works as expected but not when in a role. 
 or
how to dynamically adding the task based on the ansible_limit magic 
variable? 

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 view this discussion on the web visit 
https://groups.google.com/d/msgid/ansible-project/210be2c2-f3b2-49c7-b791-253d3b7ec62an%40googlegroups.com.

Reply via email to