ad hoc 只能执行一次,无法重复利用!
ansible 可以通过 playbook 来定义多个任务,在任务中根据需要调用模块。
playbook 使用 YAML 的语法来书写(YAML语法介绍见文)。
如何写好剧本呢?
把项目分解成一个个的task,然后按照 playbook 的语法规则将tasks串起来就好了。
下面是一个 playbook 的示例,作用是将 /etc/fstab 文件复制到 /tmp/ 和 /var/tmp/ 目录。
# cat demo.yml
---
- hosts: web
tasks:
- name: cp fstab to /tmp/
copy: src=/etc/fstab dest=/tmp/
- name: cp fstab to /var/tmp/
copy: src=/etc/fstab dest=/var/tmp/
注意:这儿的两个 copy 动作不能放到一个 name 下,会告警"found a duplicate dict key (copy). Using last defined value only."。
执行剧本:
# ansible-playbook [-v|-vv|-vvv][--syntax-check][--check] demo.yml
--syntax-check 表示做语法检测,--check, -C 表示执行一个空运行(DRY RUN)!