日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Ansible之Playbook详解、案例

發布時間:2024/2/28 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ansible之Playbook详解、案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

playbook-劇本 介紹

playbooks是 一個不同于使用Ansible命令行執行方式的模式,其功能更強大靈活。簡單來說,playbook是一個非常簡單的配置管理和多主機部署系統,不同于任何已經存在的模式,可作為一個適合部署復雜應用程序的基礎。Playbook可以定制配置,可以按照指定的操作步驟有序執行,支持同步和異步方式。值得注意的是playbook是通過YAML格式來進行描述定義的。
?

  • 核心元素

Tasks:任務,由模板定義的操作列表
Variables:變量
Templates:模板,即使用模板語法的文件
Handlers:處理器 ,當某條件滿足時,觸發執行的操作
Roles:角色

  • hosts和users介紹
  • 在playbook中的每一個play都可以選擇在哪些服務器和以什么用戶完成,hosts一行可以是一個主機組、主機、多個主機,中間以冒號分隔,可使用通配模式。其中remote_user表示執行的用戶賬號。

    --- - hosts: abc #指定主機組,可以是一個或多個組。remote_user: root #指定遠程主機執行的用戶名
  • 指定遠程主機sudo切換用

    # vim ping.yml --- - hosts: abcremote_user: root become: yes #2.6版本以后的參數,之前是sudo,意思為切換用戶運行become_user: mysql #指定sudo用戶為mysql執行playbook # ansible-playbook ping.yml -K
  • Tasks list 和action介紹

1:Play的主體部分是task列表,task列表中的各任務按次序逐個在hosts中指定的主機上執行,即在所有主機上完成第一個任務后再開始第二個任務。
在運行playbook時(從上到下執行),如果一個host執行task失敗,整個tasks都會回滾,請修正playbook 中的錯誤,然后重新執行即可。
Task的目的是使用指定的參數執行模塊,而在模塊參數中可以使用變量,模塊執行時冪等的,這意味著多次執行是安全的,因為其結果一致。
2:每一個task必須有一個名稱name,這樣在運行playbook時,從其輸出的任務執行信息中可以很好的辨別出是屬于哪一個task的。如果沒有定義name,‘action’的值將會用作輸出信息中標記特定的task。
3:定義一個task,常見的格式:”module: options” 例如:yum: name=httpd
4:ansible的自帶模塊中,command模塊和shell模塊無需使用key=value格式

  • 常用命令
  • ansible-playbook [yaml文件名、也可以yml結尾]
  • 例如:ansible-playbook a.yml
  • 參數:

    -k(–ask-pass) 用來交互輸入ssh密碼
    -K(-ask-become-pass) 用來交互輸入sudo密碼
    -u 指定用戶

    # ansible-playbook a.yml --syntax-check #檢查yaml文件的語法是否正確# ansible-playbook a.yml --list-task #檢查tasks任務# ansible-playbook a.yml --list-hosts #檢查生效的主機# ansible-playbook a.yml --start-at-task='Copy Nginx.conf' #指定從某個task開始運行
  • 示例

    # vim a.yml --- - hosts: 192.168.200.129 //指定主機remote_user: root //指定在被管理的主機上執行任務的用戶tasks: //任務列表↓- name: disable selinux //任務名關閉防火墻command: '/sbin/setenforce 0' //調用command模塊 執行關閉防火墻命令- name: start httpd //任務名 開啟httpdservice: name=httpd state=started //調用service模塊 開啟httpd 服務 # ansible-playbook a.yml --syntax-check #檢查yaml文件的語法是否正確 # ansible-playbook a.yml


?

  • play中只要執行命令的返回值不為0,就會報錯,tasks停止,可以添加下面
  • ignore_errors: True #忽略錯誤,強制返回成功


?
?

  • Handlers介紹
  • andlers也是一些task的列表,和一般的task并沒有什么區別。
  • 是由通知者進行的notify,如果沒有被notify,則Handlers不會執行,假如被notify了,則Handlers被執行
  • 不管有多少個通知者進行了notify,等到play中的所有task執行完成之后,handlers也只會被執行一次
    ?
  • 示例


?

  • 引用變量
  • 使用:vars: 添加變量

?

  • 直接引用Ansible變量
  • ansible_all_ipv4_addresses 獲取IP

?

  • 引用主機變量
  • 在組的主機后面添加變量

    # vim /etc/ansible/hosts

    # vim c.yml # ansible-playbook c.yml //執行這個劇本

  • 查看這個生成的文件

?
?
條件判斷

  • when的值是一個條件表達式,如果條件判斷成立,這個task就執行,如果判斷不成立,則task不執行
  • 如果需要根據變量、facts(setup)或此前任務的執行結果來作為某task執行與否的前提時要用到條件測試,在Playbook中條件測試使用when子句。
  • 在task后添加when子句即可使用條件測試:when子句支持jinjia2表達式或語法,例如:

  • 多條件判斷

?

  • 組條件判斷

?

  • 自定義條件判斷

?
?

  • 迭代
  • 有需要重復性執行的任務時,可以使用迭代機制。其使用格式為將需要迭代的內容定義為item變量引用,并通過with_items語句指明迭代的元素列表即可。
  • 示例:

?
?

  • Templates介紹
  • Jinja是基于Python的模板引擎。template類是Jinja的另一個重要組件,可以看作一個編譯過的模塊文件,用來生產目標文本,傳遞Python的變量給模板去替換模板中的標記。

    # scp root@192.168.175.130:/etc/httpd/conf/httpd.conf ./templates //復制被管理端的配置文件到本地 # vim templates/httpd.conf //在管理端講配置文件要修改的地方定義變量 Listen {{http_port}} ServerName {{server_name}} MaxClients {{access_num}}
  • 在/etc/ansible/hosts 添加變量

    # vim /etc/ansible/hosts [abc] 192.168.200.129 http_port=192.168.200.129:80 access_num=100 server_name="www.yun.com:80" # vim apache.yml # ansible-playbook apache.yml #然后執行腳本 然后去abc組的主機上查看下配置文件是否已經改了

?
?

  • Tags介紹
  • 在一個playbook中,我們一般會定義很多個task,如果我們只想執行其中的某一個task或多個task時就可以使用tags標簽功能了

# ansible-playbook hosts.yml --tags="only" //只執行這個標簽上面的任務
  • 事實上,不光可以為單個或多個task指定同一個tags。playbook還提供了一個特殊的tags為always。作用就是當使用always當tags的task時,無論執行哪一個tags時,定義有always的tags都會執行。

    執行下面命令

    # ansible-playbook hosts.yml --tags="only" //去被管理主機上查看文件創建情況 2個tags都會執行

總結

以上是生活随笔為你收集整理的Ansible之Playbook详解、案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。