Ansible Playbook
# 什么是Playbook
playbook是一个 由yaml语法编写的文本文件,它由play和task两部分组成。
play: 主要定义要操作主机或者主机组
task:主要定义对主机或主机组具体执行的任务,可以是一个任务,也可以是多个任务(模块)

总结:playbook是由一个或多个play组成,一个play可以包含多个task任务。
可以理解为: 使用多个不同的模块来共同完成一件事情。
# Playbook与Ad-Hoc
playbook是对AD-Hoc的一种编排方式。playbook可以持久运行,而Ad-Hoc只能临时运行。playbook适合复杂的任务,而Ad-Hoc适合做快速简单的任务。playbook能控制任务执行的先后顺序。
# Playbook书写格式
playbook是由yml语法书写,结构清晰,可读性强,所以必须掌握yml语法
| 语法 | 描述 |
|---|---|
| 缩进 | YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能使用tabs。 |
| 冒号 | 以冒号结尾的除外,其他所有冒号后面所有必须有空格。 |
| 短横线 | 表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表。 |
# Playbook案例实战
# Ansible部署NFS示例
编写安装配置
nfs服务的playbook文件[root@manager nfs]# cat install_nfs.yml - hosts: webservers tasks: - name: Installed NFS Server yum: name: nfs-utils state: present - name: Configure NFS Server copy: src: ./exports.j2 dest: /etc/exports - name: Init NFS Server file: path: /data state: directory owner: nfsnobody group: nfsnobody - name: Systemd NFS Server systemd: name: nfs state: started enabled: yes1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22准备
playbook依赖的exports.j2文件[root@manager nfs]# echo "/data 10.0.0.0/24(rw,sync)" > exports.j21检查
playbook语法[root@manager nfs]# ansible-playbook install_nfs.yml --syntax-check playbook: install_nfs.yml1
2
3执行
playbook文件[root@manager nfs]# ansible-playbook install_nfs.yml1客户端执行命令测试
[root@manager nfs]# showmount -e 10.0.0.12 Export list for 10.0.0.12: /data 10.0.0.0/24 [root@manager nfs]# showmount -e 10.0.0.13 Export list for 10.0.0.13: /data 10.0.0.0/241
2
3
4
5
6
7
# Ansible部署Httpd示例
编写安装配置 httpd 服务的 playbook 文件
[root@manager httpd]# cat installed_httpd.yml #1.定义play #2.定义task、(Installed、Configure、Init、Systemd) - hosts: webservers tasks: - name: Installed Httpd Server yum: name: httpd state: present - name: Configure Httpd Server copy: src: ./httpd.conf.j2 dest: /etc/httpd/conf/httpd.conf owner: "root" group: "root" mode: '0644' backup: yes notify: Restart Httpd Server - name: Init Httpd Server copy: src: ./index.html.j2 dest: /var/www/html/test.html - name: Systemd Httpd Server systemd: name: httpd state: started enabled: yes handlers: - name: Restart Httpd Server systemd: name: httpd state: restarted1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38准备
playbook依赖的文件检查 playbook 语法
[root@manager httpd]# ansible-playbook installed_httpd.yml --syntax-check playbook: installed_httpd.yml1
2
3执行playbook文件
[root@manager httpd]# ansible-playbook installed_httpd.yml1访问服务器对应的 web 页面测试

Last Updated: 2024/03/29, 17:39:25