ansible playbook組件1

  1. playbook基本語法
    html

    YAML語法介紹:http://www.yaml.org/spec/1.2/spec.html#Syntaxnginx

    wKioL1muT3ugzcLVAAA4SV5aLlI822.png-wh_50

    第一行:表示該文件是YAML文件,非必須shell

    第二行:定義該YAML針對的目標主機,all是全部,也能夠是單個或者組服務器

    第三行:定義tasks集合,上面圖片中就有3個taskide

    第四行:定義task名稱,非必須,建議根據task實際任務命名命令行

    第五行:定義一個狀態action, 例如上面就是用yum安裝nginxdebug

    第6-9行:使用template模板管理文件,validate參數指文件生成後使用後面命令作nginx語法驗證;notify是觸發handlers,若是同步後文件MD5有變化會觸發restart nginx service 這個handler.rest

    第10-12行:定義一個handler狀態讓nginx服務重啓htm

    問題:注意格式,不然會報錯:ERROR! Syntax Error while loading YAML.blog

    使用--syntax-check參數檢查語法:

    $ansible-playbook nginx.yaml --syntax-check

    playbook: nginx.yaml

    $ansible-playbook nginx.yaml --list-task   #列出task任務名稱

    playbook: nginx.yaml

     play #1 (all): all TAGS: []

      tasks:

        Install Nginx Package TAGS: []

        Copy Nginx.conf TAGS: []

    $ansible-playbook nginx.yaml --list-hosts #列出針對的主機

    #ansible-playbook -i nginx nginx.yaml -f 3  #執行腳本,根據返回結果來判斷

    PLAY RECAP **************************************************************

    192.168.1.2    : ok=4    changed=3    unreachable=0    failed=0

    #能夠經過命令查看各服務器nginx端口

    若是有修改nginx.conf,只須要運行命令

    #ansible-playbook -i nginx /etc/ansible/role/nginx/nginx.yaml -f 3 --start-at-task='Copy Nginx.conf'

    ####################################################################################################################

    若是須要修改的比較複雜建議採用多目錄方式,看的比較清楚,出錯方便查詢

    blob.png

    blob.pngblob.png

    ####################################################################################################################

  2. playbook支持交互式執行task,能夠指定--step參數

    ansible-playbook test nginx.yaml -f 3 --start-at-task='Copy Nginx.conf'

  3. playbook變量與引用

    1)定義全局變量:在定義主機組的時候進行定義;若是單臺主機和主機組定義的變量名稱相同,單臺主機變量會生效

    2)經過ansible-playbook 命令行傳入 ansible-playbook test.yaml -e "key=KEYTEST"

       支持傳多個變量以及指定文件方式傳入變量,變量文件支持YAML和JSON格式

    3)參數自定義

    blob.pngblob.png

    4)在playbook文件內使用vars_files

    將變量定義到某個文件中,而後再去引用這個文件

    blob.png

    blob.png

    5)使用register內的變量

    說明:例如2個tasks,其中第二個task是否執行須要判斷第一個task運行後的結果,這個時候就須要在task之間傳遞數據了

    variable.yaml:

    ---

       - hosts: test

         gather_facts: no

         tasks:

            - name: register variable

              shell: hostname

              register: info

            - name: diplay Variable

              debug: msg="The variable is {{ info }}"

    #ansible-playbook variable.yaml

    6)使用vars_prompt傳入

    說明:經過交互式的方式給定義好的參數傳入變量值

    promp.yaml

    blob.pngblob.png

相關文章
相關標籤/搜索