【发布时间】:2018-04-10 14:12:57
【问题描述】:
我需要在 linux 机器上安装一些软件包。由于各种原因(本质上是操作系统版本),某些(少数)软件包可能会丢失
- vars:
pkgs:
- there_1
- not_there_1
- there_2
...
但我也想通过一个单一的剧本来管理它们。所以我不能把它们都粘在一个地方
yum: state=latest name="{{pkgs}}"
因为缺少包会弄乱事务,因此没有安装任何东西。
但是,明显(且缓慢)的逐个安装也失败了,因为第一个丢失的包将整个循环吹出水面,因此:
- name Packages after not_there_1 are not installed
yum: state=latest name="{{item}}"
ignore_errors: yes
with_items: "{{ pkgs }}"
有没有办法忽略循环中的错误,让所有项目都有机会? (即安装错误在循环中表现为continue)
【问题讨论】:
-
似乎是一个糟糕的设计。您的系统应该处于理想状态,而不是“尝试去做,但我不在乎”。
-
@KonstantinSuvorov:期望的状态是“安装了 php 和支持包”。但是,如果 php 版本是 5.6(我的一些盒子需要它),我需要拉入 mcrypt 和 pecl-mcache;这些在 7.2 中不存在(见图)。我可以根据版本(最终根据操作系统版本)来判断这些东西,但它让我觉得这是不必要的拖累。