定义
Playbook 是一个由一个或多个 play 组成的文件;play 是针对特定主机或主机组执行的一组有序的任务;每个 playbook 必须包含两部分:
hosts: 运行 playbook 的一组主机,事先在/etc/ansible/hosts 文件中
tasks: 需要在主机上运行的任务
除了这两个必须选项,还有一些可选项选项,也可能需要包含在 play 中,如:
name: play 的名称,在运行该 play 时,会在运行过程中显示
action:后面加上[模块名称]: [空格] [执行模块的命令]
playbook 以 yaml 格式编写的,通常以 yml 扩展名保存。yaml 格式使用空格缩进,对于空格的数量没有特别要求,但需要注意:
- 同一级别内的元素必须使用相同的缩进;
- 对于子项目,缩进必须比父项目多
- 样式如下
运行方法
ansible-playbook <filename.yml> ... [options]
运行前先给目标主机进行免密认证,否则在每次执行的时候加上-k 让后输入ssh连接密码
常见选项
--check -C 只检测看是否会出现问题,不会执行
--limit 192.168.199.111 只限制指定ip能运行
例一
利用playbook在指定主机创建mysql用户
ip已经添加到文件/etc/ansible/hosts文件中
绿色代表执行成功且没有任何改变
黄色代表执行成功且有改变
红色代表执行失败
例二
变量的使用
vim /etc/ansible/hosts,[test:vars]为公共变量,端口默认优先执行组内定义的变量,在执行公共变量,当执行.yml文件时,优先执行命令中定义的端口号
ansible-playbook test4.yml -k -e "port=88"
默认端口号为88
例三
使用192.168.199.149作为主机,在192.168.199.150,192.168.199.151上下载安装并运行nginx,s使150和151上各有三个端口可以访问不同内容,开放81,82,83端口,在150.151主机上配置html1,html2,html3目录,并在目录下配置index.html文件,并输入内容
使用模板templates,目录结构必须如下
192.168.199.49配置
配置default.conf.j2格式的文件
执行命令,加上-k输入ssh连接密码
此时查看150,151主机上的/etc/nginx/conf.d/default.conf文件
150,151 的文件目录结构
查看端口是否启动
测试