搜索

第 3 章 Ansible Playbook 的实际示例

download PDF

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

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

3.1. Playbook 执行

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

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

  • 指向目标的受管节点,使用模式
  • 至少一个要执行的任务

在 Ansible 2.10 及更高版本中,使用 playbook 中的完全限定集合名称来确保选择了正确的模块,因为多个集合可以包含具有相同名称的模块( 如用户)。

如需更多信息,请参阅在 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

playbook 包含两个 play:

  • 首先检查 Web 服务器软件是最新的,并在需要时运行更新。
  • 第二个检查数据库服务器软件是否是最新的,并在需要时运行更新。

您的 playbook 不仅仅包含主机行和任务。

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

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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.