创建并运行您的第一个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,然后键入 YENTER 来确认。

要在您在清单文件中设置的服务器上尝试此剧本,请使用您在本系列介绍中运行连接测试时使用的相同连接参数运行 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 事实的更多信息。