Ansible: Problema con los controladores al reutilizar el rol en el libro de jugadas

Creado en 22 mar. 2016  ·  2Comentarios  ·  Fuente: ansible/ansible

Tipo de problema:
  • Informe de error
    Versión Ansible:
ansible 2.0.0.2
  config file = /home/mickael/git/emq-devops/ansible/ansible.cfg
  configured module search path = Default w/o overrides
Configuración de Ansible:

n / A

Ambiente:

Ejecutando Ansible desde Ubuntu 14.04
Gestión del sistema operativo: CentOS 7

Resumen:

Cuando se reutiliza un rol en el libro de jugadas, un manejador no usa el valor de la variable del rol esperado dentro de la tarea del manejador.

(No estoy seguro de si es el comportamiento esperado o no. Sospecho que las variables utilizadas en los controladores se sustituyen cuando se define el controlador)

Pasos para reproducir:

Clone https://github.com/mickael-ange/ansible-reports y ejecute:

ansible-playbook playbooks/test-handlers-01.yml
Resultados previstos:

La segunda llamada del controlador tendría 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   
Resultados actuales:

El resultado real es que ambas llamadas al controlador usan el mismo valor de variable ( item=test1 ) incluso si la variable test_name se ha redefinido en el libro de jugadas.

$ 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

Todos 2 comentarios

Es posible que haya solucionado esto recientemente, pero lo investigaré tan pronto como pueda.

Esto sigue siendo lo mismo con Ansible 2.1
Realmente no puedo usar el mismo rol más de una vez si el controlador se parece a

- 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 }

Pero detiene el contenedor con un nombre que se ha definido como el primero en el libro de jugadas.

Intenté usar la variable en el nombre del controlador, pero en ese caso no se activan en absoluto.

Actualizar:
Esto solo funciona si tengo esto en función.

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

y esto en el libro de jugadas

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

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

arkag picture arkag  ·  3Comentarios

renaudguerin picture renaudguerin  ·  3Comentarios

Pallokala picture Pallokala  ·  3Comentarios

hryamzik picture hryamzik  ·  3Comentarios

rchady picture rchady  ·  3Comentarios