Ansible 294 第三章筆記

知識點1:編寫和運行PLAYBOOK

  • PLAYBOOK是以YAML格式編寫的文本文件,擴展名.yml

  • PLAYBOOK使用空格字符縮進來表示其數據結構,包含兩個基本規則。

  1.     處於層次結構中同一級別的數據元素(例如同一列表中的項目)必須具有相同的縮進量。

  2.     如果項目屬於其他項目的子項,其縮進量必須大於父項。

  • PLAYBOOK開頭由三個破折號組成,這是開始的標記(---)

  • 結尾用三個圓點標記,一般會省略(...)

- name:*****     #第一個鍵,簡述該play用途

  host:****      #第二個鍵,表示任務主機或組

  tasks:****     #第三個鍵,PLAY運行的任務列表

  • 提高輸出的詳細程度,共4級

[student@workstation deploy-review]$ ansible-playbook -v

[student@workstation deploy-review]$ ansible-playbook -vv

[student@workstation deploy-review]$ ansible-playbook -vvv

[student@workstation deploy-review]$ ansible-playbook -vvvv

  • 語法驗證

[student@workstation deploy-review]$ ansible-playbook --syntax-check webserver.yml

  • 執行空運行

[student@workstation deploy-review]$ ansible-playbook -c webserver.yml      #僅報告在該執行PLAYBOOK時將會發生什麼更改,但不會對受管主機進行任何實際的更改

知識點1練習:編輯site.yml

---

- name: Install and Start Apache HTTPD

  hosts: web

  tasks:

    - name: httpd package is present

      yum:

        name: httpd

        state: present

    - name: Correct index.html is present

      copy:

        src: files/index.html

        dest: /var/www/html/index.html

    - name: httpd is started

      service:

        name: httpd

        state: started

        enabled: true

[student@workstation playbook-basic]$ ansible-playbook --syntax-check site.yml

playbook: site.yml

[student@workstation playbook-basic]$ ansible-playbook site.yml

PLAY [Install and Start Apache HTTPD] **************************************************************************************************************

TASK [Gathering Facts] *****************************************************************************************************************************

ok: [serverc.lab.example.com]

ok: [serverd.lab.example.com]

TASK [httpd package is present] ********************************************************************************************************************

changed: [serverd.lab.example.com]

changed: [serverc.lab.example.com]

TASK [Correct index.html is present] ***************************************************************************************************************

changed: [serverd.lab.example.com]

changed: [serverc.lab.example.com]

TASK [httpd is started] ****************************************************************************************************************************

changed: [serverc.lab.example.com]

changed: [serverd.lab.example.com]

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

serverc.lab.example.com    : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

serverd.lab.example.com    : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

知識點2:編寫實施多個PLAYBOOK

  • PLAY中的遠程用戶和特權升級

  • 查找用於任務的模塊 -l

[student@workstation playbook-basic]$ansilbe-doc -l

  • 用於示例輸出 -s

[student@workstation playbook-basic]$ansible-doc -s

  • 用於輸出詳細結果 -v

[student@workstation playbook-basic]$ansible-playbook internet.yml  -v

知識點2:示例inventery.yml

---

- name: Enable intranet services

  hosts: servera.lab.example.com

  become: yes

  tasks:

    - name: latest version of httpd and firewall installed

      yum:

        name:

          - httpd

          - firewalld

        state: latest

    - name: Test html page is installed

      copy:

        content: "Welcome to the example.com intranet!\n"

        dest: /var/www/html/index.html

    - name: Firewalld enabled and running

      service:

        name: firewalld

        enabled: true

        state: started

    - name: Firewalld permits acess to httpd service

      firewalld:

        service: http

        permanent: true

        state: enabled

        immediate: yes

    - name: httpd enabled and running

      service:

        name: httpd

        enabled: true

        state: started

- name: Test intranet web server

  hosts: localhost

  become: no

  tasks:

    - name: Connect to intranet web server

      uri:

        url: http://servera.lab.example.com

        return_content: yes

        status_code: 200

知識點2:示例3 internet.yml

---

- name: Enable internet services

  hosts: serverb.lab.example.com

  become: yes

  tasks:

    - name: latest version of all required packages installed

      yum:

        name:

          - firewalld

          - httpd

          - mariadb-server

          - php

          - php-mysqlnd

        state: latest

    - name: firewalld enabled and running

      service:

        name: firewalld

        enabled: true

        state: started

    - name: firewalld permits http service

      firewalld:

        service: http

        permanent: true

        state: enabled

        immediate: yes

    - name: httpd enabled and running

      service:

        name: httpd

        enabled: true

        state: started

    - name: mariadb enabled and running

      service:

        name: mariadb

        enabled: true

        state: started

    - name: test php page is installed

      get_url:

        url: "http://materials.example.com/labs/playbook-review/index.php"

        dest: /var/www/html/index.php

        mode: 0644

- name: Test internet web server

  hosts: localhost

  become: no

  tasks:

    - name: connect to internet web server

      uri:

        url: http://serverb.lab.example.com

        status_code: 200

總結:

  1. PLAY是一個有序的任務列表,這些任務針對清單中選定的主機運行。

  2. Playbook是一個文本文件,其中包含由一個或多個按順序運行的play組成的列表。

  3. Ansible Playbook以YAML格式編寫。

  4. YMAL文件的結構中使用空格縮進來代表數據層次結構。

  5. 任務的實施使用標準化代碼,這些代碼打包爲Ansible模塊。

  6. ansible-doc命令可以列出已安裝的模塊,同時提供關於如何在playbook中使用模塊的文檔和示例代碼片段。

  7. ansible-playbook命令用於驗證playbook語法並運行playbook.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章