什么是playbook
1 2 3 4 5 6 7 8 9 10 11 |
PlayBook即"剧本","兵书"之意,PlayBook是由以下部分组成的 play(host): 定义的是主机的角色。(主角还是配角) Book(task): 定义的是具体执行的任务。(角色的台词和动作) playbook: 由一个或多个play(角色)组成,一个play(角色)可以包含多个task(台词,动作)。 简单理解为: 对不同的主机使用很多不同的模块做很多工作完成一件事情 在Ansible中"剧本文件"是以yml结尾的文件。 在SaltStack中"剧本文件"是以sls结尾的文件。 但是语法,使用的都是yaml语法 |
playbook组成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
[root@m01 ~]# vim touch.yml #指定执行动作的主机组 - hosts: web_group #指定远端操作的用户 remote_user: root #开始定义变量 vars: file_name: lhd #指定动作 tasks: #注释:说明这个动作 - name: 创建文件 #指定shell模块创建一个文件 shell: touch /tmp/{{ file_name }} #执行前检查语法 [root@m01 ~]# ansible-playbook --syntax-check touch.yml playbook: touch.yml #该命令,只能检查语法,无法验证逻辑 |
PlayBook与ad-hoc
特点 | PlayBook | ad-hoc |
---|---|---|
完整性 | √ | ✘ |
持久性 | √ | ✘ |
执行效率 | 低 | 高 |
变量 | 支持 | 不支持 |
耦合度 | 低 | 高 |
1 2 3 4 |
1.PlayBook功能比ad-hoc更全,是对ad-hoc的一种编排. 2.PlayBook能很好的控制先后执行顺序, 以及依赖关系. 3.PlayBook语法展现更加的直观. 4.playbook可以持久使用,ad-hoc无法持久使用. |
YAML语法
语法 | 描述 |
---|---|
缩进 | YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能使用TAB |
冒号 | 以冒号结尾的除外,其他所有冒号后面所有必须有空格 |
短横线 | 表示列表项,使用一个短横杠加一个空格,多个项使用同样的缩进级别作为同一列表 |
playbook实战-部署httpd
1.配置主机清单
1 2 3 4 5 6 7 8 9 10 |
[root@m01 ~]# vim /etc/ansible/hosts [web_group] web01 ansible_ssh_pass='1' web02 ansible_ssh_pass='1' web03 ansible_ssh_pass='1' [root@m01 ~]# vim /etc/hosts 172.16.1.7 web01 172.16.1.8 web02 172.16.1.9 web03 |
2.测试连接
1 |
[root@m01 ~]# ansible web_group -m ping |
3.编写剧本
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 |
[root@m01 ~]# cat httpd.yml - hosts: web_group tasks: - name: Stop Selinux selinux: state: disabled - name: Stop Firewalld systemd: name: firewalld state: stopped - name: Install Httpd yum: name: httpd state: present - name: Start Httpd Server systemd: name: httpd state: started - name: Config Httpd Index copy: content: test ansible install httpd dest: /var/www/html/index.html |
4.测试语法
1 2 3 |
[root@m01 ~]# ansible-playbook --syntax-check httpd.yml playbook: httpd.yml |
5.运行剧本
1 |
[root@m01 ~]# ansible-playbook zuoye.yml |