1. Playbook
Playbook 是ansible管理配置、部署应用和编排的语言,可以使用playbook 来描述你想在远程主机执行的策略或者执行的一组步骤的过程等。Playbook 采用的YAML语法结构。
2. Playbook 组成
目标部分(Target section):定义将要执行的playbook的远程主机组
hosts: 定义远程的主机组
user: 执行该任务组的用户
remote_user: 与user相同
sudo : 如果设置为yes,执行该任务组的用户在执行任务的时候,获取root权限
sudo_user: 如果设置user为tom,sudo为yes,sudo_user为jerry,则tom用户则会获取jerry用户的权限
connection:通过什么方式连接到远程主机,默认为ssh
变量部分(Variable section):定义Playbook运行时需要使用的变量
vars:定义变量
vars_files: 在其它文件中定义变量
vars_prompt: playbook 执行时,手动输入变量的值。private为yes时隐藏输入字符
vars_prompt:
- name: http
prompt:'please enter something'
private:yes
setup种变量的调用,与python中字典、列表调用类似,如
{{ansible_devices.sda.paritions.sda2.size}}
{{ansible_mounts[0].mount}}
register: 将执行结果保存为变量,供后续处理
任务部分(Task section):定义将要在远程主机上执行的任务列表
- name: install apache
yum:
name: httpd
state: present
- name: restart apache
service:
name: httpd
state: started
管理部分(Handler section):定义task执行完成后需要调用的任务
handlers:
所有tasks都执行完,才会执行handlers
需要调用才会执行handlers
3. Playbook roles
它允许根据定义的格式对⽂件进⾏分组,从本质上来讲,它是⼀个具有⼀些⾃动化功能的包含。⻆⾊允许将变量、⽂件、任务、模板、Handlers放到⼀个⽂件夹中,然后包含他们。在建⽴好⼀个有效的依赖关系之后,还可以在⼀个⻆⾊中包含另外⼀个⻆⾊。和包含⼀样,可以传递变量给⻆⾊。
site.yml ⽂件,roles使⽤示例
5. Playbooks中的条件判断
1)定义在 Ansible 中的 hosts 和 groups 变量中
2)在 playbook 中指定
3)任意指定变量⽂件
4)交互⽅式获取变量值
5)获取 setup 模块的变量