Ansible 294 第三章笔记

a 夏天 提交于 2021-01-02 08:48:45

知识点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.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!