操bb国片四区三区,亚洲一片内射无码,91短视频福利导航,蜜桃臀成人免费在线视频观看

Ansible Playbook詳解

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


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

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

hosts: 運行 playbook 的一組主機

tasks: 需要在主機上運行的任務

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

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

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

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

  • 同一級別內的元素必須使用相同的縮進;
  • 對于子項目,縮進必須比父項目多

編寫 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 以 --- 開頭,用于標記文件開始;

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

第三行的 hosts 表示將要運行該 play 的主機;

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

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

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

apt: 用于安裝軟件

copy: 用于復制文件或內容

service: 用于操作 service,如啟動服務,重啟服務等

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

我們可以通過 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)     
... ... ... ...
... ... ... ...

列出的內容太多,我們可以通過 grep 進行篩選:如,我想查找關于 apt  相關的模塊

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 獲取模塊相關的幫助說明

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 中會有一個默認的任務,就是獲取 facts 信息,在 facts 信息中會保存你計算機的系統(tǒng)信息;

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

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


我要咨詢