playbook/role fails when installing a list of packages if one package isn't found in the repo

20 views
Skip to first unread message

Cary Anderson

unread,
Apr 23, 2017, 8:12:28 PM4/23/17
to Ansible Project
I am having a problem with a role that I am working on to install rpm's on a rhel server.  If a package in the list is not found, the playbook fails to install any of the packages.  Is there a way to work around this outside of only including available rpm's in my list?  I know that the osad package is not in the current repos, but my expectation was that it would simply fail and move on to the next package in the list, not fail the entire list.  Is there error handling that would address this?

This is the main.yml task for the role: /etc/ansible/roles/install-base-packages

---
- name: Add the OS Major Release specific variables
  include_vars: 'rhel{{ ansible_distribution_major_version }}.yml'
  tags: [ 'common', 'lst-rpm-base' ]

- name: Install the required LST base packages
  yum: name="{{ item }}" state=present
  with_items: "{{ rpm_base_pkgs }}"
  tags: [ 'common', 'lst-rpm-base' ]


This is my role var file for rhel6 servers: /etc/ansible/roles/install-base-packages/vars/rhel6.yml

rpm_base_pkgs:
  - lvm2
  - net-tools
  - ksh
  - lsscsi
  - nmap
  - nc
  - osad
  - oddjob-mkhomedir
  - oddjob
...

Kai Stian Olstad

unread,
Apr 24, 2017, 11:05:31 AM4/24/17
to ansible...@googlegroups.com
If the yum is anything like the apt module it takes all the entries in
the list and make one yum command
yum install lvm2 net-tools .....

I don't now if it's possible to turn this behavior off, but a workaround
like this will work.

inc.yml
---
- yum: name={{ item }}
ignore_errors: yes


install.yml
---
- include: inc.yml
with_items: '{{ rpm_base_pkgs }}'


--
Kai Stian Olstad
Reply all
Reply to author
Forward
0 new messages