原文网址:https://www.cnblogs.com/yjt1993/p/10972135.html
1、交互提示:使用关键字:vars_prompt
例:使用ansible的交互式功能创建用户和给定一个密码。很实用

---
- hosts: test50
remote_user: root
vars_prompt:
- name: user_name
prompt: Enter Username
private: no
- name: user_passwd
prompt: Enter Password
encrypt: "sha512_crypt"
confirm: yes
tasks:
- name: create user
user:
name: "{{user_name}}"
password: "{{user_passwd}}"

关键字vars_prompt常用选项说明:
private:用户输入的值是否可见,当值为yes时,表示不可见,常用于密码,为no时,可见。
default:设置默认值,当不输入任何值时,使用该默认值。
confirm:再次确认,适合密码。
2、tags标签
默认情况下,ansible在执行一个playbook的时候,会执行playbook中定义的所以任务。ansible的标签功能可以给角色,文件,任务或者整个playbook打上标签,然后利用这些标签来指定要运行playbook的个别任务。使用关键字tags,如下:

---
- hosts: hadoop
remote_user: root
gather_facts: no
tags: t0
tasks:
- name: test1
debug:
msg: "echo t1"
tags: t1
- name: test2
debug:
msg: "echo t2"
tags: t2,always

当想执行某个任务的时候,指定对应的标签就行,
如:ansible-playbook --tags t1 tags.yml 执行t1这个标签的任务
当想跳过某个任务的时候,使用--skip-tags选项,
如:ansible-playbook --skip-tags t2 tags.yml 跳过t2
在定义标签时的语法如下:

语法1: tags: - t1 - t2 语法2: tags: t1,t2 语法3: tags: ['t1', 't2']

ansible内置的五个标签:
always #总是执行 never #总是不执行 tagged #带标签的 untagged #不带标签的 all #全部,默认就是all。
3、block
将多个任务组合成一个块,并且可以对这个块做条件判断,以及当块里面的任务失败时,进行失败处理。
如:

---
- hosts: hadoop
remote_user: root
gather_facts: no
tags: t0
tasks:
- name: block1
block: #定义块
- shell: ls /123
rescue: #当上面的块失败时,该关键字下面的任务将被执行
- debug:
msg: "echo block 1"
always: #always关键字,不管block块是否执行成功,该关键字定义的任务都要被执行。
- debug:
msg: "echo done"

记录学习和生活的酸甜苦辣.....哈哈哈

368

被折叠的 条评论
为什么被折叠?



