Executar pausa no host local
Você pode executar a tarefa pause
em um host específico, por exemplo, localhost
e obter a resposta da matriz hostvars hostvars['localhost']
( roubado daqui ).
- 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'
Você precisa usar uma reprodução dedicada nesse host para poder acessar a resposta na matriz hostvars. Se você executá-lo uma vez em um host (como em sua solicitação original), você precisará adivinhar qual host será processado primeiro e usar hostvars['firstprocessedhost']
(às vezes hostvars['db1']
).
Quando você usa delegate_to: localhost
, a tarefa ainda é executada para db1
e a resposta é armazenada em hostvars['db1']
.
Você não deve depender da ordem dos seus hosts, e o módulo de pausa tem a intenção de pausar um livro de reprodução para não solicitar dados do usuário.
vars_prompt
Se for possível, você deve usar a seção vars_prompt
do seu jogo:
- 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'