Puede ejecutar la tarea pause
en un host específico, por ejemplo, localhost
y obtener la respuesta de la matriz hostvarshostvars['localhost']
(robada de aquí).
- name: Pause prompt on localhost
hosts: localhost
tasks:
- name: Prompt
pause:
prompt: "Do you want to install mysql (yes/no)?"
register: install_mysql
- name: Get the answer from the hostvars array
hosts: all
tasks:
- name: Include role when you answered 'yes'
include_tasks: mysql.yml
when: hostvars['localhost']['install_mysql']['user_input'] == 'yes'
Debe usar una reproducción dedicada en ese host para poder acceder a la respuesta en la matriz hostvars. Si lo ejecuta una vez en un grupo de host (como en su solicitud original ), debe adivinar qué host se procesará primero y usarhostvars['firstprocessedhost']
(a veceshostvars['db1']
).
Cuando usa delegate_to: localhost
, la tarea aún se ejecuta para db1
y la respuesta se almacena en hostvars['db1']
.
No debe depender del orden de sus hosts y el módulo de pausa está destinado a pausar un libro de jugadas para no solicitar datos del usuario.
Si es posible, deberías usar la sección vars_prompt
de tu obra:
- name: A play with a vars_prompt section
hosts: all
vars_prompt:
- name: install_mysql
prompt: "Do yo want to install mysql (yes/no)?"
tasks:
- name: Include role when you answered 'yes'
include_tasks: mysql.yml
when: install_mysql == 'yes'