久久久久无码精品,亚洲国产精品国语在线,国产成人精品热玖玖玖,国产福利一区二区在线观看

Ansible Playbook詳解

2021-11-03 16:22:38 shuai.chang


睿智創(chuàng)新RAIZ,一體化IT服務(wù)提供商

Playbook 是一個由一個或多個 play 組成的文件;play 是針對特定主機(jī)或主機(jī)組執(zhí)行的一組有序的任務(wù);每個 playbook 必須包含兩部分:

hosts: 運行 playbook 的一組主機(jī)

tasks: 需要在主機(jī)上運行的任務(wù)

除了這兩個必須選項,還有一些可選項選項,也可能需要包含在 play 中,如:

name: play 的名稱,在運行該 play 時,會在運行過程中顯示。

become: 與配置文件中的 become 作用一樣,用于提權(quán),當(dāng)配置文件中禁用提權(quán)時,你想要某個 play 使用提權(quán)的話,你可以在 play 中添加 become。

playbook 以 yaml 格式編寫的,通常以 yml 擴(kuò)展名保存。yaml 格式使用空格縮進(jìn),對于空格的數(shù)量沒有特別要求,但需要注意:

  • 同一級別內(nèi)的元素必須使用相同的縮進(jìn);
  • 對于子項目,縮進(jìn)必須比父項目多

編寫 playbook

it@workstation:~/ansible$ vim test.yml
it@workstation:~/ansible$ cat test.yml
---
- name: Install Apache
  hosts: servera
  tasks:
    - name: Install apache httpd
      apt:
        name: apache2
        state: present
    - name: Copy using inline content
      copy:
        content: Welcome to
        dest: /var/www/html/index.html
    - name: Start apache service
      service:
        name: apache2
        state: started
        enabled: yes

Playbook 以 --- 開頭,用于標(biāo)記文件開始;

第二行的 name 為該 play 的名稱;

第三行的 hosts 表示將要運行該 play 的主機(jī);

第四行的 tasks 表示該 play 將要執(zhí)行的具體任務(wù);

通過縮進(jìn),我們可以看出 tasks 一共分為三個部分,也就是三個模塊,每個模塊由一個 name 開表示該模塊的 name,雖然 name 是可選選項,但建議寫上,用來作為對該模塊執(zhí)行任務(wù)的解釋說明,并且 name 的內(nèi)容會在 playbook 執(zhí)行此模塊時,顯示在執(zhí)行過程中;

name 下面的是模塊的名稱,在該 play 的 tasks 中一共有三個模塊:

apt: 用于安裝軟件

copy: 用于復(fù)制文件或內(nèi)容

service: 用于操作 service,如啟動服務(wù),重啟服務(wù)等

我們可以通過 ansible-doc 來獲取更多關(guān)于模塊的信息:

我們可以通過 ansible-doc -l 來列出所有模塊

t@workstation:~/ansible$ ansible-doc -l
a10_server                                    Manage A10 Networks AX/SoftAX/Thu...
a10_server_axapi3                            Manage A10 Networks AX/SoftAX/Thu...
a10_service_group                            Manage A10 Networks AX/SoftAX/Thu...
a10_virtual_server                            Manage A10 Networks AX/SoftAX/Thu...
aci_aaa_user                                  Manage AAA users (aaa:User)     
... ... ... ...
... ... ... ...

列出的內(nèi)容太多,我們可以通過 grep 進(jìn)行篩選:如,我想查找關(guān)于 apt  相關(guān)的模塊

it@workstation:~$ ansible-doc -l | grep apt
apt                                                          Manages apt-packages           
apt_key                                                      Add or remove an apt key       
apt_repo                                                      Manage APT repositories via apt-r...
apt_repository                                                Add and remove APT repositories 
apt_rpm                                                      apt_rpm package manager         
fortios_switch_controller_security_policy_captive_portal      Names of VLANs that use captive p...
na_ontap_qos_adaptive_policy_group                            NetApp ONTAP Adaptive Quality of ...
na_ontap_ucadapter                                            NetApp ONTAP UC adapter configura...
nios_naptr_record                                            Configure Infoblox NIOS NAPTR rec...
skydive_capture                                              Module which manages flow capture...
vmware_guest_network                                          Manage network adapters of specif...                           

通過 ansible-doc Module_Name 獲取模塊相關(guān)的幫助說明

it@workstation:~$ ansible-doc apt
> APT    (/usr/lib/python3/dist-packages/ansible/modules/packaging/os/apt.py)

        Manages `apt' packages (such as for Debian/Ubuntu).

  * This module is maintained by The Ansible Core Team
OPTIONS (= is mandatory):

- allow_unauthenticated
        Ignore if packages cannot be authenticated. This is useful for
        bootstrapping environments that manage their own apt-key setup.
        `allow_unauthenticated'
is only supported with state:
        `install'/`present'
        [Default: no]
        type: bool
        version_added: 2.1
... ... ... ...
... ... ... ...

執(zhí)行 playbook

it@workstation:~/ansible$ ansible-playbook test.yml 
BECOME password:

PLAY [Install Apache] ******************************************************************************

TASK [Gathering Facts] *****************************************************************************
ok: [servera]

TASK [Install apache httpd] ************************************************************************
changed: [servera]

TASK [Copy using inline content] *******************************************************************
changed: [servera]

TASK [Start apache service] ************************************************************************
ok: [servera]

PLAY RECAP *****************************************************************************************
servera                    : ok=4    changed=2    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0 

由于我們配置了 become,所以在運行的時候會提示輸入 become 密碼;

在這里,我們可以看到前面說的,在執(zhí)行過程中會顯示 play 的名稱,告訴你現(xiàn)在執(zhí)行的是那個 play;

每個 play 中會有一個默認(rèn)的任務(wù),就是獲取 facts 信息,在 facts 信息中會保存你計算機(jī)的系統(tǒng)信息;

然后是三個在 play 中定義的 task,在執(zhí)行 tasks 時,會顯示當(dāng)前所執(zhí)行的 task 的名稱,以及執(zhí)行的狀態(tài),如果是 ok,則表示系統(tǒng)狀態(tài)沒有任何更改,如果是 changed,則表示系統(tǒng)狀態(tài)發(fā)生了改變;

在最后,還有一個關(guān)于該 playbook 執(zhí)行結(jié)果的匯總,有多少個 changed,有多少個 failed,有多個 skipped 等等;


我要咨詢
康平县| 运城市| 邮箱| 永和县| 福州市| 西乌珠穆沁旗| 德清县| 枞阳县| 屯昌县| 罗源县| 富川| 祁阳县| 红桥区| 满洲里市| 武夷山市| 正安县| 乌鲁木齐县| 安龙县| 临潭县| 尉氏县| 海门市| 兴义市| 沁阳市| 岳西县| 新闻| 光山县| 新营市| 云阳县| 察哈| 分宜县| 武冈市| 凤冈县| 大兴区| 原平市| 静海县| 长阳| 河曲县| 呼玛县| 柳林县| 丘北县| 丽江市|