ansible-playbook

ansible提供了更强大的管理Managed nodes的工具,ansible-playbook,找一个类比的例子:如果ansible操作管理远程主机类比于使用ls/ping/ps等命令管理主机,ansible-play就可以类比成shell脚本,将ansible命令组合起来,形成一个playbook,来完成一次整体的配置部署工作。playbook可以理解成剧本,或者blueprint蓝图。

ansible playbook通常是个yaml格式的文本文件,包含三大组件:

  • Play:是task列表,task按照顺序排列,安装顺序执行
  • Tasks:是Module的集合,包含一个或多个module,用来定义一组操作
  • Module:功能模块,比如用到的ping模块,debug模块

一个playbook示例:playbook.yaml

- name: My first play
  hosts: virtualmachines
  tasks:
   - name: Ping my hosts
     ansible.builtin.ping:
   - name: Print message
     ansible.builtin.debug:
       msg: Hello world

执行:

$ ansible-playbook -i inventory_file playbook.yaml

输出:

PLAY [My first playbook] *****************************************************************************************************************************************

TASK [Gathering Facts] *******************************************************************************************************************************************
ok: [10.100.0.90]

TASK [ping my hosts] *********************************************************************************************************************************************
ok: [10.100.0.90]

TASK [pring message] *********************************************************************************************************************************************
ok: [10.100.0.90] => {
    "msg": "Hello world"
}

PLAY RECAP *******************************************************************************************************************************************************
10.100.0.90                : ok=3    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

从执行输出来看,playbook会隐式的执行一个TASK [Gathering Facts] 。PLAY RECAP是概括; 扼要重述; 简要回顾的意思。