97色精品视频在线观看免费,日韩欧美亚洲每日更新网,国产精品色婷婷99久久精品,99e热久久免费精品首页

Ansible Playbook詳解

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


睿智創新RAIZ,一體化IT服務提供商

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

hosts: 運行 playbook 的一組主機

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

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

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

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

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

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

編寫 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 將要執行的具體任務;

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

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
... ... ... ...
... ... ... ...

執行 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 密碼;

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

每個 play 中會有一個默認的任務,就是獲取 facts 信息,在 facts 信息中會保存你計算機的系統信息;

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

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


我要咨詢
主站蜘蛛池模板: 稻城县| 宣汉县| 商丘市| 含山县| 邯郸县| 新安县| 冀州市| 犍为县| 新河县| 瑞金市| 岳普湖县| 马尔康县| 南京市| 米易县| 金平| 永安市| 丹寨县| 栾城县| 建宁县| 罗田县| 体育| 嘉善县| 临湘市| 宜州市| 班玛县| 出国| 怀安县| 呼玛县| 海门市| 芦溪县| 孟津县| 宁化县| 东乡县| 石台县| 濉溪县| 岱山县| 林甸县| 扎赉特旗| 蛟河市| 教育| 普格县|