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"

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM