Назад | Перейти на главную страницу

Установите пакеты rpm с Ansible с помощью приложения rpm (не yum)

Я хочу установить некоторые пакеты RPM с помощью Ansible и установленного менеджера пакетов rpm. yum не устанавливается.

С помощью command модуль с rpm -i {{package}} вызывает сбой задачи, если пакет уже установлен. Я ищу идиоматический способ установки пакетов, таких как модули yum или apt.

Установите yum, плюс вкусняшкии используйте модуль yum. Не устанавливается по умолчанию в AIX, но можно установить.

Требования включают модули Python yum и rpm. Я не понимаю, в каком пакете есть привязки rpm, что-то должно быть для yum. Возможно, из набора файлов rpm, но, к сожалению, у меня нет компьютера с AIX для тестирования.

- name: check if the filebeat exist
  shell:
    cmd: rpm -q filebeat
  ignore_errors: True
  register: filebeat_check

- name: transfer filebeat package to remote host
  copy:
    src: filebeat.rpm
    dest: /tmp/filebeat.rpm
  when: filebeat_check.rc != 0

- name: install filebeat
  shell:
    cmd: rpm -i /tmp/filebeat.rpm
  when: filebeat_check.rc != 0

Использовать rpm -U.

Из руководство:

rpm {-U | --upgrade} [параметры установки] PACKAGE_FILE ...

Это обновляет или устанавливает установленный в данный момент пакет до более новой версии. Это то же самое, что и установка, за исключением того, что все остальные версии пакета удаляются после установки нового пакета.

Я думаю, что это лучше всего соответствует моей проблеме:


- name: Verify package MD5
  shell: |
    package_md5=$(rpm -qp --queryformat='%{FILEMD5S}' '{{ item }}')
    package_name=$(rpm -qp --queryformat='%{NAME}' '{{ item }}')
    installed_md5=$(rpm -q --queryformat='%{FILEMD5S}' "$package_name")
    [ "$installed_md5" = "$package_md5" ]
  ignore_errors: true
  register: verify_result
  changed_when: no
  failed_when: no

- name: Install package
  shell: rpm -U '{{ item }}'
  when: verify_result.rc != 0

item это путь к файлу rpm.

Первая задача получает контрольную сумму MD5 и имя пакета из файла rpm и сравнивает контрольную сумму с установленным пакетом с тем же именем пакета. Если контрольная сумма не совпадает (и только тогда), вторая задача установит пакет rpm.