Ansible AWX 中构造型清单(Constructed Inventory)深度解析

Ansible AWX 中构造型清单(Constructed Inventory)深度解析

awx AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform. awx 项目地址: https://gitcode.com/gh_mirrors/aw/awx

什么是构造型清单

构造型清单是Ansible AWX中一种特殊的清单类型,与普通(手动)清单和智能清单并列存在。它通过动态构建的方式,基于现有清单和主机变量来创建新的清单视图,为复杂环境下的主机管理提供了强大而灵活的解决方案。

构造型清单与智能清单的关系

构造型清单的功能与智能清单有所重叠,但设计更为现代和灵活。从长远来看,智能清单将被逐步淘汰,构造型清单将成为动态清单管理的主要方式。

实际应用场景解析

让我们通过一个具体案例来理解构造型清单的强大功能:

假设我们有两个原始清单:"East"和"West",内容如下:

East清单内容:

host1 account_alias=product_dev
host2 account_alias=product_dev state=shutdown
host3 account_alias=sustaining

West清单内容:

host4 account_alias=product_dev
host6 account_alias=product_dev state=shutdown
host5 account_alias=sustaining state=shutdown

用户需求是:操作所有处于shutdown状态且属于product_dev组的主机。这需要同时满足两个条件进行筛选。

构造型清单配置详解

要实现上述需求,我们需要创建一个构造型清单,并进行如下配置:

plugin: constructed
strict: true
use_vars_plugins: true
groups:
  shutdown: resolved_state == "shutdown"
  shutdown_in_product_dev: resolved_state == "shutdown" and account_alias == "product_dev"
compose:
  resolved_state: state | default("running")

同时设置limit参数为shutdown_in_product_dev

执行后,作业将只作用于host2和host6,因为它们都满足状态为shutdown且属于product_dev组的条件。

工作原理深度剖析

  1. 清单生成机制:构造型清单内容通过清单更新操作生成,底层使用ansible-inventory命令执行。

  2. 自动更新策略:在作业启动前会自动执行更新操作,但用户仍可设置缓存超时时间以优化性能。

  3. API强制要求:创建构造型清单时,API会强制要求必须关联一个清单源。

高级功能特性

  1. 基于事实的筛选:除了主机变量外,用户还可以基于事实(facts)进行筛选,这些事实在更新前会像作业一样被预先准备。

  2. 数据库对象关联:要筛选数据库中的相关对象,用户需要使用服务器自动准备的"meta"变量,例如:

    • awx_inventory_name
    • awx_inventory_id

最佳实践建议

  1. 严格模式:务必设置strict: true参数,这样当模板出现问题时可以更容易调试。

  2. 错误排查:遇到问题时,提高verbosity级别可以获取更详细的错误信息,有助于快速定位问题。

  3. 性能考量:对于大型环境,合理设置缓存超时可以显著提高性能,避免不必要的清单重建。

  4. 变量处理:使用compose部分可以创建派生变量,如示例中的resolved_state,这能简化复杂的条件判断。

通过掌握构造型清单的使用,AWX用户可以极大地提升在复杂环境中的主机管理效率,实现更精细化的自动化操作控制。

awx AWX provides a web-based user interface, REST API, and task engine built on top of Ansible. It is one of the upstream projects for Red Hat Ansible Automation Platform. awx 项目地址: https://gitcode.com/gh_mirrors/aw/awx

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

娄祺杏Zebediah

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值