В чем разница между двумя значениями параметров состояния, присутствующими и установленными, доступными в модуле Ansible yum?

У меня есть следующая задача в моем ansible playbook:

- name: Install EPEL repo.
  yum:
    name: "{{ epel_repo_url }}"
    state: present
    register: result
    until: '"failed" not in result'
    retries: 5
    delay: 10

Другое значение, которое я могу передать в состояние, — «установлено». Какая разница между двумя? Некоторая документация доступна здесь: http://docs.ansible.com/ansible/yum_module.html


person kevmo    schedule 03.11.2016    source источник


Ответы (3)


Они делают одно и то же, они являются псевдонимами друг друга, см. этот комментарий в исходном коде модуля yum:

# removed==absent, installed==present, these are accepted as aliases

И как они используются в коде:

if state in ['installed', 'present']:
    if disable_gpg_check:
        yum_basecmd.append('--nogpgcheck')
    res = install(module, pkgs, repoq, yum_basecmd, conf_file, en_repos, dis_repos)
elif state in ['removed', 'absent']:
    res = remove(module, pkgs, repoq, yum_basecmd, conf_file, en_repos, dis_repos)
elif state == 'latest':
    if disable_gpg_check:
        yum_basecmd.append('--nogpgcheck')
    res = latest(module, pkgs, repoq, yum_basecmd, conf_file, en_repos, dis_repos)
else:
    # should be caught by AnsibleModule argument_spec
    module.fail_json(msg="we should never get here unless this all"
            " failed", changed=False, results='', errors='unexpected state')

return res

https://github.com/ansible/ansible-modules-core/blob/devel/packaging/os/yum.py

person Zlemini    schedule 03.11.2016

Состояние «Присутствует» и «Установлено» взаимозаменяемы. Они оба делают одно и то же, то есть гарантируют, что нужный пакет в вашем случае «yum» установлен.

Принимая во внимание, что состояние «Последняя» означает, что в дополнение к установке оно будет продолжаться и обновляться, если оно не является последней доступной версией.

Всякий раз, когда вы создаете свой стек/приложение или работаете над производством, всегда рекомендуется использовать состояние «Присутствует» или «Установлено». Это связано с тем, что обновление программного обеспечения, будь то развертывание вашего приложения или скачок версии зависимостей, не имеет ничего общего с конфигурацией сервера и может серьезно повредить вашу работу.

Вы можете прочитать и понять больше об этом здесь.

person Yogesh    schedule 03.11.2016

В 2.x installed и removed устарели в пользу present и absent и больше не доступны после Ansible 2.9.

person venimus    schedule 08.03.2019