第 3 章 Ansible Playbook 的实际示例


Ansible 可以与许多不同的设备分类(从基于云的 REST API、Linux 和 Windows 系统、网络硬件等)通信。

以下是两个 Ansible 模块的示例,会自动更新两种类型的服务器。

3.1. Playbook 执行

playbook 以从上到下的顺序运行。在每个 play 中,任务也会按照从上到下的顺序运行。具有多个"play"的 playbook 可以编排多计算机部署,在您的 webservers 上运行一个 play,然后在数据库服务器上运行另一个 play,然后在网络基础架构中有一个第三个 play,等等。

每个 play 至少定义了两个内容:

  • 使用模式到目标的受管节点
  • 至少一个要执行的任务
注意

使用 playbook 中的完全限定集合名称来确保选择了正确的模块,因为多个集合可以包含具有相同名称的模块(如 user)。

如需更多信息,请参阅在 playbook 中使用集合

在本例中,第一个 play 以 Web 服务器为目标;第二个 play 以数据库服务器为目标。

---
- name: Update web servers
  hosts: webservers
  become: true

  tasks:
    - name: Ensure apache is at the latest version
      ansible.builtin.yum:
        name: httpd
        state: latest
    - name: Write the apache config file
      ansible.builtin.template:
        src: /srv/httpd.j2
        dest: /etc/httpd.conf
        mode: "0644"

- name: Update db servers
  hosts: databases
  become: true

  tasks:
    - name: Ensure postgresql is at the latest version
      ansible.builtin.yum:
        name: postgresql
        state: latest
    - name: Ensure that postgresql is started
      ansible.builtin.service:
        name: postgresql
        state: started
Copy to Clipboard Toggle word wrap

playbook 包含两个 play:

  • 第一个检查 web 服务器软件是否是最新的,并根据需要运行更新。
  • 第二个检查数据库服务器软件是否是最新的,并根据需要运行更新。

您的 playbook 可以包含多个主机行和任务。

例如,此示例 playbook 为每个 play 设置 remote_user。这是 SSH 连接的用户帐户。您可以在 playbook、play 或任务级别上添加其他 Playbook 关键字,以影响 Ansible 的行为。Playbook 关键字可以控制连接插件,无论是使用特权升级、如何处理错误等。

为了支持各种环境,Ansible 可让您在 Ansible 配置或清单中将许多参数设置为命令行标志。学习这些数据源的优先级规则可帮助您扩展 Ansible 生态系统

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat