我想使用 Ansible 自动更新 Linux 服务器的 PHP。这些服务器是 SLES,所以我使用 Ansible 的 zypper 模块。问题是由于涉及的供应商变更,zypper 要求我确认解决方案 1,即更新/更改所有 php 模块的供应商,如下所示:
Problem: php5-zlib-5.5.14-63.1.x86_64 requires php5 = 5.5.14, but this requirement cannot be provided
Solution 1: Following actions will be done:
install php5-zlib-5.6.40-20.1.x86_64 (with vendor change)
openSUSE --> obs://build.opensuse.org/home:illuusio
Ansible 中是否有选择第一个解决方案并自动化整个过程的选项?我已经尝试过了,force: yes
但没有任何改变。我正在寻找一个干净的解决方案。我可以编写一个 bash 脚本,但我想用 ansible 来完成它。
答案1
该zypper
模块有一个允许供应商更改可用于状态的参数dist-upgrade
。
- name: Perform a dist-upgrade with allow vendor change
community.general.zypper:
name: '*'
state: dist-upgrade
allow_vendor_change: true
allow_vendor_change: true
向 Ansible 执行的 zypper 命令添加--allow-vendor-change
参数。我不知道是否可以在升级单个软件包时在命令行上将该参数设置为 zypper。Ansible zypper 模块仅在执行完整 dist 升级时才允许这样做(name: '*'
)。