Ansible 环境变量

2024 年 9 月 19 日 | 阅读 7 分钟

首先,为了理解 Ansible 环境变量究竟是什么,我们必须清楚地了解 Ansible 是什么,以及环境变量在 Ansible 中扮演什么角色。

Ansible 是一个流行的开源自动化工具,用于管理配置、部署应用程序和自动化任务。通过自动化重复过程、将基础设施控制为代码以及在服务器和系统之间保持一致性,它旨在简化和精简 IT 运营。

Ansible 的特点

Ansible Environment Variable

以下是 Ansible 的一些核心概念和特性

  • 无代理
    由于 Ansible 是一个无代理解决方案,因此无需在目标计算机上安装任何软件。相反,它使用 SSH(安全 Shell)连接到远程服务器并控制它们。这使得设置和管理变得简单。
  • 声明式语言
    为了指定系统的期望状态,Ansible 采用 YAML,一种简单易懂的语言。 Ansible 确保系统满足您定义的配置。
  • Playbook
    包含任务列表和 Ansible 在远程服务器上执行的指令的 YAML 文件被称为 Ansible playbook。哪些必须完成,以什么顺序,以及在哪些 playbook 上指定主机?
  • 模块
    为了与系统和服务通信,Ansible 提供了大量的模块选择。模块负责执行特定的职责,例如管理包、文件、用户或运行命令。
  • 库存
    Ansible 将管理的主机列在清单文件中。 此文件可以是静态的或动态的,可以对主机进行分组以简化管理。
  • Ad-hoc 命令
    除了允许您从命令行运行 playbook 之外,Ansible 还允许您从命令行执行 ad-hoc 命令,以便在不需要创建 playbook 的情况下在远程服务器上执行紧急操作。
  • 角色
    Ansible playbook 和任务可以使用角色进行组织和重用。通过允许您将配置和自动化功能封装到可重用组件中,它们可以更轻松地管理复杂的系统。
  • 幂等性
    Ansible playbook 可以执行多次而不影响系统的期望状态,因为它们是幂等的。 如果任务已经执行并且系统处于期望状态,Ansible 将不会进行任何更改。
  • 集成
    Ansible 可以通过模块和插件连接到一系列云服务提供商、网络设备和第三方技术。由于其多功能性,它可用于处理各种基础设施部分。

Ansible 广泛应用于 DevOps 和系统管理中,用于自动化服务器配置、软件部署、配置管理和持续交付等过程。大规模基础设施管理变得更容易,并且它有助于企业提高其 IT 运营的一致性和效率。

环境变量

环境变量是独立于程序的变量,它保存配置信息、系统设置或各种软件应用程序在计算机操作系统上运行所需的其他类型的数据。这些变量是进程运行环境的一部分,因此名为“环境变量”。它们用于控制软件的行为以及与其他应用程序、操作系统和其他软件的交互方式。

Ansible 环境变量

Ansible 中的环境变量可用于更改软件的行为,或在执行 playbook 和 role 时向其提供数据。为了配置 Ansible 操作的不同部分并与自动化流程交互,Ansible 提供了许多环境变量。

这些 Ansible 环境变量经常被使用

1. ANSIBLE_CONFIG

环境变量 ANSIBLE_CONFIG 指示 Ansible 配置文件所在的位置。您可以通过设置此选项来使用与标准配置 (Ansible.cfg) 不同的配置文件。

例如

2. ANSIBLE_ROLES_PATH

此选项允许您提供 Ansible 应在其中搜索 role 的其他文件夹。如果您的 role 不在默认 role 目录中,则此选项很有用。

例如

3. ANSIBLE_INVENTORY

变量 ANSIBLE_INVENTORY 允许您指定 Ansible inventory 文件所在的位置。它允许您使用自定义的 inventory 文件而不是默认文件。

例如

4. ANSIBLE_SSH_ARGS

通过修改此变量,您可以更改 Ansible 用于连接到远程主机的 SSH 命令。您可以传递 SSH 密钥和端口号等参数。

例如

5. ANSIBLE_PLAYBOOK_ARGS

在执行 Ansible playbook 时,您可以使用此变量添加更多命令行参数。

例如

6. ANSIBLE_VAULT_PASSWORD_FILE

如果您使用 Ansible Vault 在 playbook 中加密敏感信息,您可以使用此变量指定密码文件的路径以解密 vault 加密文件。

例如

7. ANSIBLE_STDOUT_CALLBACK

可以使用自定义的回调插件设置变量 ANSIBLE_STDOUT_CALLBACK 来格式化 Ansible 的输出。 Ansible 结果通过回调插件以不同的方式显示。

例如

您可以通过在执行 Ansible 命令或 playbook 之前设置这些环境变量来使用它们,如上例所示。这样,您就可以修改 Ansible 的功能,而无需每次启动 playbook 都修改配置文件或命令行选项。

具有所有环境变量的 Ansible 程序

让我们创建一个简单的 Ansible playbook 来演示如何在 Ansible playbook 中使用环境变量。将使用 Ansible.builtin.debug 模块打印各种环境变量的值。

程序

此 playbook 将显示所提供的环境变量的值,并且您可以看到 Ansible 在 playbook 的任务中使用这些变量的方式。

关于 Ansible 环境变量的总结

此 playbook 将显示所提供的环境变量的值,您可以看到 Ansible 在 playbook 的任务中使用这些变量的方式。

环境变量功能
ANSIBLE_CONFIG指定 Ansible 配置文件所在的位置。
ANSIBLE_ROLES_PATH指定 Ansible 应在其中搜索 role 的其他目录。
ANSIBLE_INVENTORY确定 Ansible inventory 文件所在的位置。
ANSIBLE_SSH_ARGS调整 Ansible 用于建立远程连接的 SSH 命令。
ANSIBLE_PLAYBOOK_ARGS使 Ansible playbook 能够接受更多命令行参数。
ANSIBLE_VAULT_PASSWORD_FILE标识用于解码 vault 加密文件的密码文件的位置。
ANSIBLE_STDOUT_CALLBACK配置一个特殊的回调插件来格式化 Ansible 的输出。

这些环境变量中的每一个在设置和自定义 Ansible 时都具有特定的功能。它们可以帮助您优化自动化活动并根据您的特定需求定制 Ansible。

结论

著名的自动化工具 Ansible 的适应性和可定制性取决于它的环境变量。用户可以在不经常更改配置文件或命令行选项的情况下,借助这些变量来改变 Ansible 的行为。它们执行许多任务,包括定义配置文件位置 (ANSIBLE_CONFIG)、自定义 SSH 连接 (ANSIBLE_SSH_ARGS) 和提供 inventory 文件的路径 (ANSIBLE_INVENTORY)。由于 Ansible 的灵活性,可以流畅地集成到各种 IT 环境中,并在 playbook 和 role 中提供动态配置选项,因此自动化工作流程更加有效和灵活。

Ansible 环境变量的使用进一步强调了健全数据管理的重要性。处理敏感数据(例如密码和加密密钥)时,安全问题至关重要,以防止个人信息意外泄露。通过充分利用这些变量,Ansible 可以作为一种强大而灵活的自动化解决方案,用于协调和控制 IT 基础设施,从而提高效率并减少日常操作中的人工干预。


下一个主题最佳 Ansible 书籍