创建并运行第一个 Ansible Playbook

剧本使用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,然后键入YENTER进行确认。

要在您在清单文件中设置的服务器(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的内容。

Published At
Categories with 技术
comments powered by Disqus