Ansible用法playbook


playbook文件

hello.yml
---
- name: test_tasks  【各個任務的總描述】
   hosts: webserver
   remote_user: root
  gather_facts: no

   tasks:
    - name: test1              【單個任務的描述】【一個- name里只能有一個模塊的任務】
      command: hostname
    - name: test2               【單個任務的描述】
      command: ls /root
1、文件后綴名為.yml或.yaml【因為是用yaml語言編寫】
2、文件開頭以---標記【習慣而已,為了標准化】
在第一行也可加yaml解釋器:#!/usr/bin/ansible-playbook;執行腳本時 ./test/yml;可省去ansibile-playbook test.yml
3、文件內容有嚴格的縮進控制
4、hosts: webserver 【后面有空格,冒號后面有空格】
5、remote_user: root 【表示執行任務的用戶:root】
6、tasks:空一行,為了規范
7、gather_facts: no設置為No,表示運行playbook腳本不做采集主機的真相信息,可以更快速執行腳本
8、關鍵詞都是冒號結尾的

  

ansible-vault

ansible-vault工具功能,管理加密解密playbook文件
1、ansible-vault [create | decrypt |encrypt| edit | rekey | view]
2、ansible-vault encrypt hello.yml 【加密】
3、ansible-vault decrypt hello.yml 【解密】
4、ansible-vault create hello.yml  【創建】
5、ansible-vault edit hello.yml     【編輯】
6、ansible-vault rekey hello.yml  【修改口令】
7、ansible-vault view hello.yml   【查看】

ansible-console

ansible-console工具,是一個交互式工具
1、直接輸入ansible-console
2、root@all (2)[f:5]$  【root表示用戶,all表示主機清單的所有主機,(2)表示主機清單有2台主機,[f:5]表示可並發執行5台主機】
3、root@all (2)[f:5]$ cd webserver   【進入到webserver主機組下】;cd 192.168.1.14 【進入到指定某個主機下】
4、root@all (2)[f:5]$ command hostname 【模塊名+命令,即可直接執行】

palybook介紹

playbook是由一個或多個"play"組成的列表。
play的主要功能在於將事先歸並為一組的主機裝扮成事先通過ansible中的task定義好的角色。從根本上來講,所謂task無非是
調用ansible的一個module;將多個play組織在一個playbook中,可以連同所有的play執行。
playbook采用YMAL 語言編寫。

palybook核心元素

1、hosts 執行的遠程主機列表
2、tasks 任務集
3、variables 內置變量或自定義變量在playbook中調用
4、templates 模板,可替換模板文件中的變量並實現一些簡單邏輯的文件
5、handlers 和notity 必須結合使用,由特定的條件觸發操作,notity通知>handlers執行
6、tags 標簽 對某條任務名個別名,用於指定某條具體的任務執行:
      ansible-playbook -t tagsname fiel.yml 【指定tagsname此標簽執行任務】

YAML語法簡介

1、在單一腳本中,可以連續三個字號---區分
2、次行開始正常些playbook的內容,一般建議寫明該playbook的功能【即標記name:】
3、使用#號注釋
4、縮進必須是同一的,不能空格和tab混用
5、縮進的級別也必須是一致的,同樣的縮進代表同樣的級別,程序判別配置的級別是通過縮進和換行來實現的
6、YAML文件內容和linux系統大小寫判斷方式一致,區別大小寫
7、k/v值可同一行寫也可換行寫,同一行使用:分隔,換行寫使用-
8、v可以是一個字符串,也可是另一個列表
9、一個完整的代碼塊功能需最少元素包括 name 、tasks
10、一個name只能包括一個task
11、YAML文件擴展名通常為yml或yaml
- name: **
  hosts: **
  remote_user: **
  
  tasks:
    - name: **
      module: **
注意:所有和上一行的縮進必須保持相同的縮進量,如空格兩個,則所有的以下的都必須是空格兩個

  

playbook基礎組件

 tasks:
    - name: test1              
      command: hostname
1、如上,任務的模塊名為shell或command時,后面直接跟命令,而非key=value形式
2、如果命令或腳本退出碼不為0即執行出錯了,可以使用如下代替:
 tasks:
    - name: test1              
      command: command1 || command2
 或者使用ignore_errors來忽略錯誤信息:
 tasks:
    - name: test1              
      command: command1
      ignore_errors: True

  

運行playbook

1、運行方式:
ansible-playbook [filename.yml]  [options]
常見options:
    --check 只檢測腳本語法,但不真正執行操作, -C 代替別名ansible-playbook [filename.yml] -C
    --list-hosts 列出運行任務的主機
    --limit hosts  只針對主機列表中的主機執行
    -v 顯示過程 -vv -vvv更詳細過程
    
2、舉例:
ansible-playbook file.yml --check [或-C]
ansible-playbook file.yml --list-hosts
ansible-playbook file.yml --limit webserver
ansible-playbook file.yml -v [或-vv] [或-vvv]

3、ansible-playbook的新增功能參數:
--ask-vault-pass:   加密playbook文件時提示輸入密碼
-D :                即--diff:當更新的文件數及內容較少時,該選項可顯示這些文件不同的地方,該選項結合-C用會有較好的效果
-e :                 -e var1=value1 在Playbook中引入外部變量
--flush-cache:       將清除fact到的遠程主機緩存
--force-handlers:    強制運行handlers的任務,即使在任務失敗的情況下
-i :                 -i inventory/init 指定要讀取的主機清單文件init
--list-tags:         列出所有可用的tags
--list-tasks:        列出所有即將被執行的任務。
--skip-tags:         跳過指定的tags任務。
--start-at-task:     從第幾條任務開始執行。
--step:              逐步執行Playbook定義的任務,並經人工確認后繼續執行下一步任務。
--syntax-check:      檢查Playbook中的語法書寫。
-t TAGS, --tags=TAGS:指定執行該tags的任務


免責聲明!

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



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