从命令行设置某些 Ansible `module_defaults`

问题描述 投票:0回答:0

我们使用 Ansible 来设置某些 APT 包。这样,可以及时应用系统更新,同时让我们更好地控制某些正在运行的守护进程的版本控制。

有时,这些保留的软件包之一需要有意升级(想想:安全更新、错误修复、计划升级)。理想的流程是:

  1. 更新
    group_vars/
    下相应文件中的版本号。
  2. 在特定主机上重新运行 Ansible,在命令行上手动指定要否决保留并将包更新到
    group_vars/
    .
  3. 中指定的版本
  4. .. 稍后重新启动守护进程以反映所需的新版本。 (与这个问题无关)

通过 Ansible 运行有意升级保留包的最佳实践是什么? 或者问题可能是:是否可以在命令行上提供额外的

module_defaults
?伪形式:

ansible-playbook infrastructure.yaml ... --extra-vars="module_defaults.apt.allow_change_held_packages=true"

类似于模块默认值,但适用于整个剧本中给定模块的所有使用,并且仅在指示时这样做。


我考虑过一种方法,使用特定目的的变量:

# Ansible task:
- apt:
    name: abc=123
    allow_change_held_packages: "{{ module_defaults__apt__allow_change_held_packages | default('false') }}"

# CLI invocation:
ansible-playbook infrastructure.yaml --tags abc --limit jkl_hosts --extra-vars="module_defaults__apt__allow_change_held_packages=true"

这种模式是有效的但不受欢迎,因为它需要在每个使用站点扩散特殊情况的 var;容易出错的人类作者必须记住添加它,而容易出错的人类审稿人需要记住这是必要的。

ansible apt
© www.soinside.com 2019 - 2024. All rights reserved.