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

У меня есть следующая задача в моей сборнике пьес:

- 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

2 ответа

Решение

Они делают то же самое, они являются псевдонимами друг друга, смотрите этот комментарий в исходном коде модуля 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

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

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

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

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

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

Другие вопросы по тегам