Ansible: Problème avec les gestionnaires lors de la réutilisation du rôle dans le playbook

Créé le 22 mars 2016  ·  2Commentaires  ·  Source: ansible/ansible

Type de probleme:
  • Rapport d'erreur
    Version Ansible :
ansible 2.0.0.2
  config file = /home/mickael/git/emq-devops/ansible/ansible.cfg
  configured module search path = Default w/o overrides
Configuration Ansible :

n / A

Environnement:

Exécuter Ansible depuis Ubuntu 14.04
Gestion du système d'exploitation : CentOS 7

Résumé:

Lors de la réutilisation d'un rôle dans le playbook, un gestionnaire n'utilise pas la valeur de variable de rôle attendue dans la tâche du gestionnaire.

(Je ne sais pas si c'est le comportement attendu ou non. Je soupçonne que les variables utilisées dans les gestionnaires sont substituées lorsque le gestionnaire est défini)

Étapes à reproduire :

Clonez https://github.com/mickael-ange/ansible-reports et exécutez :

ansible-playbook playbooks/test-handlers-01.yml
Résultats attendus:

Le deuxième appel de gestionnaire aurait item=test2 .

PLAY ***************************************************************************

TASK [setup] *******************************************************************
ok: [localhost]

TASK [test-handlers-01 : always changes to trigger handler] ********************
changed: [localhost]

TASK [test-handlers-01 : include] **********************************************
included: /home/mickael/git/ansible-reports/roles/test-handlers-01/tasks/flush_handlers.yml for localhost

RUNNING HANDLER [test-handlers-01 : test handler] ******************************
changed: [localhost] => (item=test1)

TASK [test-handlers-01 : always changes to trigger handler] ********************
changed: [localhost]

TASK [test-handlers-01 : include] **********************************************
included: /home/mickael/git/ansible-reports/roles/test-handlers-01/tasks/flush_handlers.yml for localhost

RUNNING HANDLER [test-handlers-01 : test handler] ******************************
changed: [localhost] => (item=test2)

PLAY RECAP *********************************************************************
localhost                  : ok=7    changed=4    unreachable=0    failed=0   
Résultats actuels:

Le résultat réel est que les deux appels de gestionnaire utilisent la même valeur de variable ( item=test1 ) même si la variable test_name a été redéfinie dans le playbook.

$ ansible-playbook -vvvv playbooks/test-handlers-01.yml
Using /home/mickael/git/ansible-reports/ansible.cfg as config file
Loaded callback default of type stdout, v2.0
1 plays in playbooks/test-handlers-01.yml

PLAY ***************************************************************************

TASK [setup] *******************************************************************
ESTABLISH LOCAL CONNECTION FOR USER: mickael
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1458621398.48-100196802537724 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1458621398.48-100196802537724 )" )
localhost PUT /tmp/tmp67Fgab TO /home/mickael/.ansible/tmp/ansible-tmp-1458621398.48-100196802537724/setup
localhost EXEC LANG=C LC_ALL=C LC_MESSAGES=C /usr/bin/python /home/mickael/.ansible/tmp/ansible-tmp-1458621398.48-100196802537724/setup; rm -rf "/home/mickael/.ansible/tmp/ansible-tmp-1458621398.48-100196802537724/" > /dev/null 2>&1
ok: [localhost]

TASK [test-handlers-01 : always changes to trigger handler] ********************
task path: /home/mickael/git/ansible-reports/roles/test-handlers-01/tasks/main.yml:2
ESTABLISH LOCAL CONNECTION FOR USER: mickael
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1458621398.81-97442582835398 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1458621398.81-97442582835398 )" )
localhost PUT /tmp/tmpGhth2G TO /home/mickael/.ansible/tmp/ansible-tmp-1458621398.81-97442582835398/command
localhost EXEC LANG=C LC_ALL=C LC_MESSAGES=C /usr/bin/python /home/mickael/.ansible/tmp/ansible-tmp-1458621398.81-97442582835398/command; rm -rf "/home/mickael/.ansible/tmp/ansible-tmp-1458621398.81-97442582835398/" > /dev/null 2>&1
NOTIFIED HANDLER test handler
changed: [localhost] => {"changed": true, "cmd": "echo hello", "delta": "0:00:00.000985", "end": "2016-03-22 12:36:38.842304", "invocation": {"module_args": {"_raw_params": "echo hello", "_uses_shell": true, "chdir": null, "creates": null, "executable": null, "removes": null, "warn": true}, "module_name": "command"}, "rc": 0, "start": "2016-03-22 12:36:38.841319", "stderr": "", "stdout": "hello", "stdout_lines": ["hello"], "warnings": []}

TASK [test-handlers-01 : include] **********************************************
task path: /home/mickael/git/ansible-reports/roles/test-handlers-01/tasks/main.yml:7
included: /home/mickael/git/ansible-reports/roles/test-handlers-01/tasks/flush_handlers.yml for localhost

RUNNING HANDLER [test-handlers-01 : test handler] ******************************
ESTABLISH LOCAL CONNECTION FOR USER: mickael
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1458621398.89-30437666642483 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1458621398.89-30437666642483 )" )
localhost PUT /tmp/tmp0ZvLkG TO /home/mickael/.ansible/tmp/ansible-tmp-1458621398.89-30437666642483/command
localhost EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '"'"'echo BECOME-SUCCESS-galeggchoargiitnuhweljdxhuzvxyfk; LANG=C LC_ALL=C LC_MESSAGES=C /usr/bin/python /home/mickael/.ansible/tmp/ansible-tmp-1458621398.89-30437666642483/command; rm -rf "/home/mickael/.ansible/tmp/ansible-tmp-1458621398.89-30437666642483/" > /dev/null 2>&1'"'"''
changed: [localhost] => (item=test1) => {"changed": true, "cmd": "echo test1", "delta": "0:00:00.001024", "end": "2016-03-22 12:36:38.923978", "invocation": {"module_args": {"_raw_params": "echo test1", "_uses_shell": true, "chdir": null, "creates": null, "executable": null, "removes": null, "warn": true}, "module_name": "command"}, "item": "test1", "rc": 0, "start": "2016-03-22 12:36:38.922954", "stderr": "", "stdout": "test1", "stdout_lines": ["test1"], "warnings": []}

TASK [test-handlers-01 : always changes to trigger handler] ********************
task path: /home/mickael/git/ansible-reports/roles/test-handlers-01/tasks/main.yml:2
ESTABLISH LOCAL CONNECTION FOR USER: mickael
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1458621398.94-276260811692367 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1458621398.94-276260811692367 )" )
localhost PUT /tmp/tmp86IG7E TO /home/mickael/.ansible/tmp/ansible-tmp-1458621398.94-276260811692367/command
localhost EXEC LANG=C LC_ALL=C LC_MESSAGES=C /usr/bin/python /home/mickael/.ansible/tmp/ansible-tmp-1458621398.94-276260811692367/command; rm -rf "/home/mickael/.ansible/tmp/ansible-tmp-1458621398.94-276260811692367/" > /dev/null 2>&1
NOTIFIED HANDLER test handler
changed: [localhost] => {"changed": true, "cmd": "echo hello", "delta": "0:00:00.001004", "end": "2016-03-22 12:36:38.968493", "invocation": {"module_args": {"_raw_params": "echo hello", "_uses_shell": true, "chdir": null, "creates": null, "executable": null, "removes": null, "warn": true}, "module_name": "command"}, "rc": 0, "start": "2016-03-22 12:36:38.967489", "stderr": "", "stdout": "hello", "stdout_lines": ["hello"], "warnings": []}

TASK [test-handlers-01 : include] **********************************************
task path: /home/mickael/git/ansible-reports/roles/test-handlers-01/tasks/main.yml:7
included: /home/mickael/git/ansible-reports/roles/test-handlers-01/tasks/flush_handlers.yml for localhost

RUNNING HANDLER [test-handlers-01 : test handler] ******************************
ESTABLISH LOCAL CONNECTION FOR USER: mickael
localhost EXEC ( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1458621399.02-117648891898111 )" && echo "$( echo $HOME/.ansible/tmp/ansible-tmp-1458621399.02-117648891898111 )" )
localhost PUT /tmp/tmpBLQAIM TO /home/mickael/.ansible/tmp/ansible-tmp-1458621399.02-117648891898111/command
localhost EXEC /bin/sh -c 'sudo -H -S -n -u root /bin/sh -c '"'"'echo BECOME-SUCCESS-djwqhqqtijmpdsiqoxgfazrcxttepenq; LANG=C LC_ALL=C LC_MESSAGES=C /usr/bin/python /home/mickael/.ansible/tmp/ansible-tmp-1458621399.02-117648891898111/command; rm -rf "/home/mickael/.ansible/tmp/ansible-tmp-1458621399.02-117648891898111/" > /dev/null 2>&1'"'"''
changed: [localhost] => (item=test1) => {"changed": true, "cmd": "echo test1", "delta": "0:00:00.001034", "end": "2016-03-22 12:36:39.051023", "invocation": {"module_args": {"_raw_params": "echo test1", "_uses_shell": true, "chdir": null, "creates": null, "executable": null, "removes": null, "warn": true}, "module_name": "command"}, "item": "test1", "rc": 0, "start": "2016-03-22 12:36:39.049989", "stderr": "", "stdout": "test1", "stdout_lines": ["test1"], "warnings": []}

PLAY RECAP *********************************************************************
localhost                  : ok=7    changed=4    unreachable=0    failed=0  
bug

Tous les 2 commentaires

J'ai peut-être corrigé cela récemment, mais je vais m'en occuper dès que possible.

C'est toujours la même chose avec Ansible 2.1
Je ne peux pas vraiment utiliser le même rôle plus d'une fois si le gestionnaire ressemble à

- name: delete varnish container
  docker:
    image: "{{ docker_varnish_image_tag }}"
    name: "{{ docker_varnish_container_name }}"
    state: absent
    docker_api_version: "{{ docker_api_version }}"

docker_varnish_container_name variable

- { role: docker_varnish, docker_varnish_container_name: varnish-apps }
- { role: docker_varnish, docker_varnish_container_name: varnish-cache }

Mais il arrête le conteneur dont le nom a été défini comme le tout premier dans le playbook.

J'ai essayé d'utiliser une variable dans le nom du gestionnaire, mais elles ne sont pas du tout déclenchées dans ce cas.

Mettre à jour:
Cela ne fonctionne que si j'ai ce rôle

- name: Set container name variable
  set_fact: docker_varnish_container_name={{container_name}}
  when: container_name is defined

et ceci dans playbook

- { role: docker_varnish, container_name: varnish-apps }
- { role: docker_varnish, container_name: varnish-cache }

Cette page vous a été utile?
0 / 5 - 0 notes