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"