Ansible的Playbook模式
1、概念
playbook的基础组件:
-
Hosts:运行指定任务的目标主机;
-
remoute_user: 在远程主机上执行任务的用户;
-
sudo_user: tasks:任务列表
-
模块,模块参数; 格式:
-
(1) action: module arguments (2) module: arguments
注意:shell和command模块后面直接跟命令,而非key=value类的参数列表;
(1) 某任务的状态在运行后为changed时,可通过“notify”通知给相应的handlers;
(2) 任务可以通过"tags“打标签,而后可在ansible-playbook命令上使用-t指定进行调用;
-
运行playbook的方式:
-
(1) 测试
- ansible-playbook --check 只检测可能会发生的改变,但不真正执行操作;
- ansible-playbook --list-hosts 列出运行任务的主机;
-
(2) 运行
-
handlers: 任务,在特定条件下触发; 接收到其它任务的通知时被触发;
-
notify: HANDLER TASK NAME
-
variables:
(1) facts:可直接调用;注意:可使用setup模块直接获取目标主机的facters;
-
(2) 用户自定义变量:
-
(a) ansible-playbook命令的命令行中的
-e VARS, --extra-vars=VARS -
(b) 在playbook中定义变量的方法: vars: var1: value1 - var2: value2 变量引用:{{ variable }}
-
2、示例
install_redis.yaml
- hosts: 10.9.251.30
remote_user: root
tasks:
- name: install resdis
yum: name=redis state=latest
- name: start redis
systemd: name=redis state=started enabled=true
- 检查语法
ansible-playbook install_redis.yaml --syntax-check
- 列出执行主机
ansible-playbook install_redis.yaml --list-hosts
playbook: install_redis.yaml
play #1 (10.9.251.30): 10.9.251.30 TAGS: []
pattern: [u'10.9.251.30']
hosts (1):
10.9.251.30
- 列出任务
ansible-playbook install_redis.yaml --list-tasks
playbook: install_redis.yaml
play #1 (10.9.251.30): 10.9.251.30 TAGS: []
tasks:
install resdis TAGS: []
start redis TAGS: []
- 执行任务
ansible-playbook -C install_redis.yaml
PLAY [10.9.251.30] *************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************************
ok: [10.9.251.30]
TASK [install resdis] **********************************************************************************************************************************************************************************************************************
changed: [10.9.251.30]
TASK [start redis] *************************************************************************************************************************************************************************************************************************
changed: [10.9.251.30]
PLAY RECAP *********************************************************************************************************************************************************************************************************************************
10.9.251.30 : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0