如果未安装repo,则Ansible yum disablerepo不起作用

时间:2018-01-26 19:33:26

标签: ansible yum

我有许多不同的Centos7服务器正在运行。我喜欢使用ansible立即更新它们。

由于我的一台服务器启用了额外的存储库,我不想更新。我已经在剧本中添加了禁用此回购的选项。这按预期工作。

但是,在我的其他服务器上,我没有安装并启用此repo。在我的ansible playbook中使用disablerepo时,我收到一个错误:找不到存储库。

如何在ansible-playbook中解决这个问题?如果安装了repo,是否可以添加条件;然后disablerepo;否则什么都不做?

是否可以忽略这些错误?

ansible-剧本:

---
- hosts: [all]
  tasks:
- name: update all packages to lastest version
  yum:
    name: '*'
    state: latest
    disablerepo: sernet-samba-4.2

1 个答案:

答案 0 :(得分:0)

您可以像注释中的link一样放置ignore_errors: yes,也可以放置when,只有在安装了某些软件包后,才能确保必须先将它们注册到变量中,我在想类似的东西:

- name: check if installed
  shell: rpm -qa sernet-samba-4.2
  register: is_installed

- name: update all packages to lastest version
  yum:
    name: '*'
    state: latest
    disablerepo: sernet-samba-4.2
  when: is_installed.rc == 1

警告:未经测试。