ansible 交互提示、tags和block

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"

 

posted @ 2019-06-04 10:40  北漂-boy  阅读(3355)  评论(0编辑  收藏  举报