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: yes
1
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.j2
1检查
playbook
语法[root@manager nfs]# ansible-playbook install_nfs.yml --syntax-check playbook: install_nfs.yml
1
2
3执行
playbook
文件[root@manager nfs]# ansible-playbook install_nfs.yml
1客户端执行命令测试
[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/24
1
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: restarted
1
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.yml
1
2
3执行playbook文件
[root@manager httpd]# ansible-playbook installed_httpd.yml
1访问服务器对应的 web 页面测试
Last Updated: 2024/03/29, 17:39:25