playbook 是由一组ansible调用module命令的集合,使用yaml语言编写,执行顺序自上而下;
1 | 命令格式:ansible-playbook test.yml |
Playbook 组成
Target section: 定义将要执行playbook的远程主机组
- name:执行过程中会打印出来变量的值
- hosts:定义远程的主机组
- user:执行该任务组的用户
- remote_user: 与user一样,任选其一
- sudo:如果设置为yes,执行该任务组的用户在执行任务的时候获取root权限
- sudo_user:如果sudo设置为yes,user设置为user1,sudo_user设置为user2,那么user1会获取user2权限
- connection:通过什么方式连接到远程主机,默认是ssh
- gather_facts:除非明确定义不需要在远程主机上执行setup模块,否则会默认自动执行;不需要执行setup模块,需False该选项。
Variable section:定义playbook运行时需要使用的变量
- vars:格式为“变量名称:变量值”
- vars_files:将变量名称和变量值定义在一个文件中,调用该文件,文件格式为每行一个“变量名称:变量值”
- vars_prompt:定义一个变量,通过交互方式让用户输入变量值
Task section:定义将要在远程主机上执行的任务列表
- tasks: #三种写法如下
- 调用模块
name: 定义名称
action:模块名称 模块参数调用 - 直接使用模块
name: 定义名称
模块名称:调用方法 - 模块使用
name:定义名称
模块名称:
模块参数调用
Handler section:定义task执行完成以后需要调用的任务
满足一下两点才能达到触发的效果,否则会不生效。
- 必须在tasks中使用notify调用
- 在notify中定义内容一定要和tasks中定义的 - name 内容一样
新建用户的示例
1 | [root@vm00 ~]# cat test.yaml |
1 | [root@vm00 ~]# ansible-playbook test.yaml |
修改selinux,安装epel扩展包
1 | [root@vm00 ~]# cat test2.yml |