什么是Playbook?
playbook
是由一个或者多个模块组成的, 使用多个不同的模块, 完成一件事。
playbook
通过yaml
语法来识别描述的状态文件, 扩展名为yaml
。
Playbook的三个语法特点
缩进
YAML使用一个固定的缩进风格表示层级结构, 每个缩进由两个空格组成, 不能使用Tab
。
冒号
除了以冒号为结尾的以外, 其他所有的冒号后面必须要有空格。
短横线
- 表示列表项, 使用一个短横线加一个空格。
- 多个项使用同样的缩进级别作为同一列表。
一个安装Httpd的简单实例:
# ansible install httpd
- hosts: # 这里是需要安装的机器列表, 也可以是ansible配置好的组名
- 192.168.199.110
- 192.168.199.180
tasks: # 任务块
- name: install httpd server # 描述信息
yum: # ansible 模块
name: httpd,lrzsz # 需要安装的软件名称
state: installed # 执行动作
- name: start httpd server
service:
name: httpd
state: started
enabled: yes
Playbook 常用到的关键字
hosts
hosts这一块的内容一个或者多个组或主机, 以逗号为分隔符, 或者也可换行写。
例子如下:
两种写法, 都可:
- hosts: web
remote_user: root # 远程执行的用户
sudo: yes # 是否使用sudo
sudo_user: lanyulei # 登陆到远程机器后sudo到其他用户
或者
- hosts:
- 192.168.1.1
- 192.168.1.2
如果你需要在使用sudo
时指定密码, 可在运行ansible-playbook
命令时加上选项--ask-sudo-pass(-K)
。
如果使用sudo
时, playbook
疑似被挂起, 可能是在sudo
提示处被卡住, 这时可执行Control-C
杀死卡住的任务, 再重新运行一次。