知识点1:编写和运行PLAYBOOK
PLAYBOOK是以YAML格式编写的文本文件,扩展名.yml
PLAYBOOK使用空格字符缩进来表示其数据结构,包含两个基本规则。
处于层次结构中同一级别的数据元素(例如同一列表中的项目)必须具有相同的缩进量。
如果项目属于其他项目的子项,其缩进量必须大于父项。
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
总结:
PLAY是一个有序的任务列表,这些任务针对清单中选定的主机运行。
Playbook是一个文本文件,其中包含由一个或多个按顺序运行的play组成的列表。
Ansible Playbook以YAML格式编写。
YMAL文件的结构中使用空格缩进来代表数据层次结构。
任务的实施使用标准化代码,这些代码打包为Ansible模块。
ansible-doc命令可以列出已安装的模块,同时提供关于如何在playbook中使用模块的文档和示例代码片段。
ansible-playbook命令用于验证playbook语法并运行playbook.
来源:oschina
链接:https://my.oschina.net/u/4406457/blog/4873541