创建并运行您的第一个AnsiblePlaybook
Playbook 使用 YAML 格式定义一个或多个 plays。 剧本是一组有序的任务,这些任务以自动化流程的方式排列,例如设置 Web 服务器或将应用程序部署到生产环境。
在 playbook 文件中,plays 被定义为 YAML 列表。 典型的游戏从确定哪些主机是该特定设置的目标开始。 这是通过 hosts
指令完成的。
将 hosts
指令设置为 all
是一种常见的选择,因为您可以通过使用 -l
运行 ansible-playbook
命令来限制执行时播放的目标范围。 这允许您在不同的服务器或组上运行相同的 playbook,而无需每次都更改 playbook 文件。
首先在您的主文件夹上创建一个新目录,您可以在其中保存练习手册。 首先,确保您位于 Ubuntu 用户的主目录中。 从那里,创建一个名为 ansible-practice
的目录,然后使用 cd
命令导航到该目录:
cd ~ mkdir ansible-practice cd ansible-practice
如果您遵循了所有先决条件,那么您应该已经有了一个工作清单文件。 您现在可以将该文件复制到新的 ansible-practice
目录中。 例如,如果您在主文件夹的 ansible
目录中创建了测试清单文件,则可以使用以下命令将该文件复制到新目录:
cp ~/ansible/inventory ~/ansible-practice/inventory
接下来,创建一个新的剧本文件:
nano playbook-01.yml
以下 playbook 定义了从给定清单中针对 all
主机的播放。 它包含一个打印调试消息的任务。
注意:我们将在本系列的下一部分中了解有关任务的更多信息。
将以下内容添加到您的 playbook-01.yml
文件中:
~/ansible-practice/playbook-01.yml
--- - hosts: all tasks: - name: Print message debug: msg: Hello Ansible World
完成后保存并关闭文件。 如果您使用 nano
,您可以通过键入 CTRL+X
,然后键入 Y
和 ENTER
来确认。
要在您在清单文件中设置的服务器上尝试此剧本,请使用您在本系列介绍中运行连接测试时使用的相同连接参数运行 ansible-playbook
。 在这里,我们将使用名为 inventory
的清单文件和 sammy 用户连接到远程服务器,但请务必更改这些详细信息以与您自己的清单文件和管理用户:
ansible-playbook -i inventory playbook-01.yml -u sammy
你会看到这样的输出:
OutputPLAY [all] *********************************************************************************** TASK [Gathering Facts] *********************************************************************** ok: [203.0.113.10] TASK [Update apt cache] ********************************************************************** ok: [203.0.113.10] => { "msg": "Hello Ansible World" } PLAY RECAP *********************************************************************************** 203.0.113.10 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
您可能已经注意到,即使您在 playbook 中只定义了一个任务,play 输出中也列出了两个任务。 在每次播放开始时,Ansible 默认执行一个额外的任务来收集关于远程节点的信息——称为 facts。 因为可以在剧本上使用事实来更好地自定义任务的行为,所以事实收集任务必须在执行任何其他任务之前发生。
我们将在本系列的后面部分中了解有关 Ansible 事实的更多信息。