我们使用 Ansible 来设置某些 APT 包。这样,可以及时应用系统更新,同时让我们更好地控制某些正在运行的守护进程的版本控制。
有时,这些保留的软件包之一需要有意升级(想想:安全更新、错误修复、计划升级)。理想的流程是:
group_vars/
下相应文件中的版本号。group_vars/
.通过 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;容易出错的人类作者必须记住添加它,而容易出错的人类审稿人需要记住这是必要的。