• 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"
  • 相关阅读:
    漫谈委托和事件
    CSS从今以后不用发愁
    分享我对领域驱动设计(DDD)的学习成果
    [转]使用CSS3实现树形控件
    Golang 常量
    牛客网做算法题时 golang 读取输入的方法
    Golang 占位符
    Golang 字符和字符串的区别
    Golang 基本数据类型
    Golang 输入
  • 原文地址:https://www.cnblogs.com/yjt1993/p/10972135.html
Copyright © 2020-2023  润新知