LINUX.ORG.RU
ФорумAdmin

ansible: странности при установке пакета через dnf

 , ,


0

2

Настраиваю виртуалки. Есть простая ansible-задачка для установки пакета FreeIPA клиента:

- name: Install package
  dnf:
    name:
      - freeipa-client

В документации Ansible написано, что для модуля dnf, если не задано значение параметра state, то выполнится действие такое, как-будто было бы передано значение present. Ожидаю, что поведение будет следующее: если пакета на машине нет, то он установится, если есть — то ничего не произойдет. Сегодня заметил, что для одной из машин задача выдала состояние changed, хотя я был на 100% уверен что FreeIPA там уже есть.

Посмотрел по логам dnf и увидел следующее:

2022-11-15T11:17:40+0300 DDEBUG timer: sack setup: 2441 ms
2022-11-15T11:17:40+0300 INFO Package ipa-client-4.9.8-6.0.1.module+el8.6.0+20571+0c339766.x86_64 is already installed.
2022-11-15T11:17:40+0300 DDEBUG timer: depsolve: 206 ms
2022-11-15T11:17:42+0300 DEBUG Using rpmkeys executable at /usr/bin/rpmkeys to verify signatures
2022-11-15T11:17:43+0300 INFO Running transaction check
2022-11-15T11:17:43+0300 INFO Transaction check succeeded.
2022-11-15T11:17:43+0300 INFO Running transaction test
2022-11-15T11:17:43+0300 INFO Transaction test succeeded.
2022-11-15T11:17:43+0300 DDEBUG timer: transaction test: 393 ms
2022-11-15T11:17:43+0300 INFO Running transaction
2022-11-15T11:17:44+0300 DDEBUG RPM transaction start.
2022-11-15T11:17:52+0300 DDEBUG RPM transaction over.
2022-11-15T11:17:52+0300 DDEBUG timer: verify transaction: 376 ms
2022-11-15T11:17:52+0300 DDEBUG timer: transaction: 8660 ms
2022-11-15T11:17:52+0300 DEBUG Completion plugin: Generating completion cache...
2022-11-15T11:17:53+0300 DEBUG Upgraded: authselect-1.2.5-1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: authselect-compat-1.2.5-1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: authselect-libs-1.2.5-1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: ipa-client-4.9.10-3.0.1.module+el8.7.0+20835+685a878f.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: ipa-client-common-4.9.10-3.0.1.module+el8.7.0+20835+685a878f.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: ipa-common-4.9.10-3.0.1.module+el8.7.0+20835+685a878f.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: libipa_hbac-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libldb-2.5.2-2.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libsmbclient-4.16.4-2.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libsss_certmap-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libsss_idmap-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libsss_nss_idmap-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libsss_simpleifp-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libtdb-1.4.6-1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: libwbclient-4.16.4-2.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: python3-ipaclient-4.9.10-3.0.1.module+el8.7.0+20835+685a878f.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: python3-ipalib-4.9.10-3.0.1.module+el8.7.0+20835+685a878f.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: python3-libipa_hbac-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: python3-sss-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: python3-sssdconfig-2.7.3-4.0.1.el8.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: samba-client-libs-4.16.4-2.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: samba-common-4.16.4-2.0.1.el8.noarch
2022-11-15T11:17:53+0300 DEBUG Upgraded: samba-common-libs-4.16.4-2.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-ad-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-client-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-common-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-common-pac-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-dbus-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-ipa-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-kcm-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-krb5-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-krb5-common-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-ldap-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-proxy-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Upgraded: sssd-tools-2.7.3-4.0.1.el8.x86_64
2022-11-15T11:17:53+0300 DEBUG Installed: sssd-idp-2.7.3-4.0.1.el8.x86_64

То есть сначала dnf говорит, что требуемый пакет уже установлен, а потом начинает его обновлять. Это точно нормальное поведение? Если нет, то что я делаю не так? Если да, то чем state: present отличается от state: latest и можно ли как-то сделать так, чтобы если пакет уже установлен, то ничего не происходило?

ОС: Oracle Linux 8, ansible-core 2.13.4

★★

Последнее исправление: Goganchic (всего исправлений: 1)

если не задано значение параметра state, то выполнится действие такое, как-будто было бы передано значение present. Ожидаю, что поведение будет следующее

Полагаться на дефолты - неудачная идея. Тем более что там по дефолту не present, а зависит от других параметров. И вполне вероятно может меняться от версии к версии

Не надейся на какие-то дефолты. Пиши то, что тебе нужно

Повысится и надёжность, и читаемость

А так время, сэкономленное на написание одной строки, ты потратил на дебаг

router ★★★★★
()
Ответ на: комментарий от melkor217

У ipa-client пакет sssd-idp указан как явная зависимость: sssd-idp >= 2.7.0. Не понимаю как это может повлиять на желание dnf обновить пакет ipa-client и все . Я устанавливал на этот хост ipa-client через этот же ansible-скрипт пару недель назад. Почему теперь скрипт решил внезапно обновить пакет, который был ранее установлен - загадка.

Goganchic ★★
() автор топика
Последнее исправление: Goganchic (всего исправлений: 1)
Ответ на: комментарий от router

Судя по документации там state может быть либо present, либо absent, другого не дано. Правильно ли я тебя понял, что ты предполагаешь, что в ansible-core 2.13.4 теперь по умолчанию вместо state: present используется state: latest? Или ты ничего не предполагаешь, а просто говоришь, что явное лучше неявного?

Goganchic ★★
() автор топика
Ответ на: комментарий от Goganchic

Правильно ли я тебя понял, что ты предполагаешь, что в ansible-core 2.13.4 теперь по умолчанию вместо state: present используется state: latest

Да нет ничего такого. По дефолту там выставляется state=installed, что с виду функционально не отличается от state=present

https://github.com/ansible/ansible/blob/3448fcabc539fb2d3351c20a5b82c3558d037c75/lib/ansible/modules/dnf.py#L1403

melkor217 ★★★★★
()
Ответ на: комментарий от Goganchic

У ipa-client пакет sssd-idp указан как явная зависимость: sssd-idp >= 2.7.0

Что-то не сходится.

Почему до запуска ансибла не было sssd-idp? Это же явная зависимость ипы, которая была установлена раньше.

melkor217 ★★★★★
()
Ответ на: комментарий от melkor217

Почему не сходится? У старой версии пакета такой зависимости не было, у новой есть:

rpm -qR ipa-client-4.9.8-6.0.1.module+el8.6.0+20571+0c339766.x86_64.rpm | grep idp
rpm -qR ipa-client-4.9.10-3.0.1.module+el8.7.0+20835+685a878f.x86_64.rpm | grep idp
sssd-idp >= 2.7.0

Вопрос в том, почему установилась новая версия пакета ipa-client.

Goganchic ★★
() автор топика
Ответ на: комментарий от Goganchic

Почему не сходится? У старой версии пакета такой зависимости не было, у новой есть

Ну раз не было, то сходится. Больше догадок у меня нет, нужен способ как-то воспроизвести это безобразие

melkor217 ★★★★★
()