В чем разница между двумя значениями опций "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