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