创建 Playbook
Playbook 是采用 YAML 格式的自动化蓝图,Ansible 使用它来部署和配置被管理节点。
- Playbook
Play(剧本)列表定义了 Ansible 从上到下执行操作的顺序,以实现一个整体目标。
- Play
任务(Tasks)是有序列表,映射到清单(inventory)中的被管理节点。
- Task
对单个模块的引用,定义了 Ansible 执行的具体操作。
- 模块 (Module)
Ansible 在被管理节点上运行的代码单元或二进制文件。Ansible 模块被分组在集合(collections)中,每个模块都有一个 全限定集合名称 (FQCN)。
完成以下步骤,创建一个能够 ping 你的主机并打印 “Hello world” 消息的 playbook
在你之前创建的
ansible_quickstart目录中创建一个名为playbook.yaml的文件,内容如下- name: My first play hosts: myhosts tasks: - name: Ping my hosts ansible.builtin.ping: - name: Print message ansible.builtin.debug: msg: Hello world
运行你的 playbook。
ansible-playbook -i inventory.ini playbook.yaml
Ansible 返回以下输出
PLAY [My first play] ****************************************************************************
TASK [Gathering Facts] **************************************************************************
ok: [192.0.2.50]
ok: [192.0.2.51]
ok: [192.0.2.52]
TASK [Ping my hosts] ****************************************************************************
ok: [192.0.2.50]
ok: [192.0.2.51]
ok: [192.0.2.52]
TASK [Print message] ****************************************************************************
ok: [192.0.2.50] => {
"msg": "Hello world"
}
ok: [192.0.2.51] => {
"msg": "Hello world"
}
ok: [192.0.2.52] => {
"msg": "Hello world"
}
PLAY RECAP **************************************************************************************
192.0.2.50: ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.0.2.51: ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.0.2.52: ok=3 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
在输出中你可以看到
你为 play 和每个任务定义的名称。你应该始终使用具有描述性的名称,以便于验证和排除 playbook 的故障。
“Gathering Facts”(收集事实)任务是隐式运行的。默认情况下,Ansible 会收集关于清单的信息,以便在 playbook 中使用。
每个任务的状态。每个任务的状态为
ok,这意味着它运行成功。Play 总结(recap),它汇总了每个主机在 playbook 中所有任务的结果。在本例中,共有三个任务,因此
ok=3表示每个任务都运行成功。
恭喜,你已经开始使用 Ansible 了!
另请参阅
- Ansible Playbook
开始为实际场景构建 playbook。
- 使用 Playbook
深入了解 Ansible playbook 的详细信息。
- Ansible 提示与技巧
获取使用 playbook 的技巧和窍门。
- 发现变量:事实 (Facts) 和魔术变量
了解更多关于 playbook 中
gather_facts关键字的信息。