创建剧本

剧本是自动化蓝图,采用 YAML 格式,Ansible 使用它来部署和配置受管节点。

剧本

一系列 play,定义 Ansible 执行操作的顺序(从上到下),以实现总体目标。

Play

一个有序的任务列表,映射到清单中的受管节点。

任务

对单个模块的引用,该模块定义 Ansible 执行的操作。

模块

Ansible 在受管节点上运行的代码或二进制单元。 Ansible 模块在集合中分组,每个模块都有一个完全限定集合名称 (FQCN)

完成以下步骤以创建一个剧本,该剧本会 ping 您的主机并打印“Hello world”消息

  1. 在您之前创建的 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
    
  2. 运行您的剧本。

    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 和每个任务指定的名称。您应该始终使用描述性名称,以便轻松验证和排查剧本问题。

  • “收集事实”任务会隐式运行。默认情况下,Ansible 会收集有关清单的信息,以便在剧本中使用。

  • 每个任务的状态。每个任务的状态都为 ok,表示它已成功运行。

  • play 总结,总结每个主机在剧本中所有任务的结果。在本示例中,有三个任务,因此 ok=3 表示每个任务都已成功运行。

恭喜,您已经开始使用 Ansible 了!

另请参阅

Ansible 剧本

开始为实际场景构建剧本。

使用剧本

深入了解 Ansible 剧本。

Ansible 使用技巧

获取使用剧本的技巧。

发现变量:事实和魔法变量

了解有关剧本中 gather_facts 关键字的更多信息。