1.5. 在 Satellite 中覆盖 Ansible 变量
如果在 Satellite 中运行 Ansible 角色,您可以使用 Satellite 覆盖这些角色的 Ansible 变量。
以下流程引用主机和主机组。如需更多信息,请参阅管理主机。
覆盖变量的优先级
如果您使用 Ansible 角色作为不是 Effective User 的用户运行任务,则覆盖 Ansible 变量的严格优先顺序。要确保您覆盖的变量遵循正确优先级顺序,请参阅 变量 priority:我应该在哪里放置变量?
先决条件
- Satellite 中必须具有 Ansible 变量。如需更多信息,请参阅 第 1.4 节 “导入 Ansible 角色和变量”。
- 要使用覆盖的 Ansible 变量,用户必须有一个角色,供他们查看与主机匹配的属性。
流程
- 在 Satellite web UI 中,进入到 Configure > Ansible > Variables。
- 选择您要使用 Satellite 覆盖和管理的 Ansible 变量。
- 在 默认行为 区域中,选中 覆盖 复选框。
- 在 Parameter Type 字段中,选择验证的值类型,如 字符串 或 布尔值。类型 数组和 哈希 在变量匹配时有进一步处理的选项。如需更多信息,请参阅以下优先级 化属性顺序 区域。
- 在 Default Value 字段中,如果变量没有匹配项,请输入要使用的默认值。
- 可选:如果您不想在 Satellite Web UI 中以纯文本形式显示变量的值,请选择 Hidden Value 复选框,将变量的值显示为星号。这可用于敏感值,如密码或机密令牌。
可选:展开 Optional Input Validator 区域,并指定用于验证变量的 concrete 值的条件:
- 如果要强制用户填写此变量,请选择 Required。
在 Validator Type 字段中,选择如何验证值:
-
List- 值将根据允许值的枚举进行验证。 -
regex- 值将根据正则表达式模式进行验证。
-
可选:在 Prioritize Attribute Order 区中,由主机属性指定优先级顺序来匹配带有主机的覆盖。顶部顺序具有较高的优先级。第一个匹配项优先。
您可以使用逗号作为 AND 操作,将多个属性合并到一个 matcher 键中。例如,匹配器关键字
hostgroup, environment会预期如hostgroup = "web servers"ANDenvironment = production的匹配器。如果使用参数类型 数组 或 哈希,您可以进一步设置:
- merge Overrides - Merges 成员的数组/哈希,而不是替换整个阵列或散列。如果哈希包含相同的键,则该值会被主机的值覆盖。
- Merge Default – 为数组或散列添加默认值。
- avoid Duplicates - 确保数组或散列中的值是唯一的。
- 可选:展开 指定 Matchers 区域,并指定用于选择变量覆盖的主机的条件。
- 要保存覆盖设置,请点 Submit。
要使用 Ansible 变量,请将变量作为参数添加到主机或主机组,或者将变量添加为全局参数。
将变量添加到主机
- 在 Satellite Web UI 中,进入到 Hosts > All Hosts 并选择您要使用的主机。
- 单击 Ansible 选项卡,然后在 Variables 区域中,单击铅笔图标以编辑变量的值。
- 点 tick 图标接受 changed 变量的值或跨图标来取消更改。
将变量添加到主机组
- 在 Satellite Web UI 中,进入到 Configure > Host Groups,然后选择要使用的主机组。
- 单击 Parameters 选项卡,然后在 Host Group Parameters 区域中单击 Add Parameter。
- 在 Name 字段中,添加 Ansible 变量名称。
- 从 Type 列表中,选择要验证的变量类型。
- 在 Value 字段中输入 变量的值。
将变量添加为全局参数
- 在 Satellite Web UI 中,进入到 Configure > Global Parameters,然后点击 Create Parameter。
- 在 Name 字段中,添加 Ansible 变量名称。
- 从 Type 列表中,选择要验证的变量类型。
- 在 Value 字段中输入 变量的值。
- 可选:如果您不想以纯文本显示 Ansible 变量,请选择 Hidden Values 复选框,将变量的内容显示为 Satellite Web UI 中的星号。