我想在确认用户后安装MariaDB.我有一个角色和一个简单的任务:
- name: install MariaDB
yum:
name: MariaDB
state: present
Run Code Online (Sandbox Code Playgroud)
或者如果我想使用include: MySQL.yml,如果用户想要,则该行执行,如果不是,则跳过此包括.
- name: install MariaDB
yum:
name: MariaDB
state: present
- include: MySQL.yml
Run Code Online (Sandbox Code Playgroud)
更多解释
我的主人:
[dbs]
192.168.0.10
192.168.0.11
192.168.0.12
Run Code Online (Sandbox Code Playgroud)
现在,我想如果用户为答案提示输入no,则MySQL.yml不会对任何服务器执行.
我在role(tasks/main.yml)中的代码:
---
- pause:
prompt: "Do you want to install mariadb (yes/no)?"
register: my_pause
delegate_to: localhost
- include_tasks: mysql.yml
when: hostvars['localhost'].my_pause.user_input | bool
Run Code Online (Sandbox Code Playgroud)
和我的输出:
[root@anisble ansible]# ansible-playbook playbooks/test.yml
PLAY [dbs]
********************************************************************
TASK [Gathering Facts] ******************************************************************
ok: [db1]
ok: [db2]
ok: [db3]
TASK [ssh : pause] ******************************************************************************
[ssh : pause]
Do you want to install mariadb (yes/no)?:
no
ok: [db1 -> localhost]
TASK [ssh : include_tasks] ***********************************************************************************
included: /etc/ansible/roles/ssh/tasks/mysql.yml for db1, db2, db3
TASK [ssh : install mariadb] ******************************************************************************
ok: [db3]
ok: [db2]
ok: [db1]
PLAY RECAP *****************************************************************************
db1 : ok=4 changed=0 unreachable=0 failed=0
db2 : ok=3 changed=0 unreachable=0 failed=0
db3 : ok=3 changed=0 unreachable=0 failed=0
Run Code Online (Sandbox Code Playgroud)
tec*_*raf 12
你可以使用一个变量提示或pause模块用user_input; 并为任务设置条件:
- hosts: my_host_group
vars_prompt:
- name: "install_mariadb"
prompt: "Do you want to install MariaDB (yes/no)?"
private: no
tasks:
- name: install MariaDB
yum:
name: MariaDB
state: present
when: install_mariadb | bool
- include_tasks: MySQL.yml
when: install_mariadb | bool
Run Code Online (Sandbox Code Playgroud)
要么
- hosts: my_host_group
tasks:
- pause:
prompt: "Do you want to install MariaDB (yes/no)?"
register: my_pause
delegate_to: localhost
- name: install MariaDB
yum:
name: MariaDB
state: present
when: hostvars['localhost'].mypause.user_input | bool
- include_tasks: MySQL.yml
when: hostvars['localhost'].mypause.user_input | bool
Run Code Online (Sandbox Code Playgroud)