Ansible yum 模块中可用的两个 "state" 选项值 "present" 和 "installed" 之间有什么区别?
What is the difference between two "state" option values, "present" and "installed", available in Ansible's yum module?
我的 ansible 剧本中有以下任务:
- name: Install EPEL repo.
yum:
name: "{{ epel_repo_url }}"
state: present
register: result
until: '"failed" not in result'
retries: 5
delay: 10
我可以传递给 state 的另一个值是 "installed"。两者有什么区别?此处提供一些文档:http://docs.ansible.com/ansible/yum_module.html
它们做同样的事情,即它们是彼此的别名,请参阅 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
状态为“Present”和“Installed”可互换使用。他们都做同样的事情,即它会确保安装你需要的包 'yum'。
而 State as 'Latest' 意味着除了安装之外,如果它不是最新的可用版本,它将继续并更新。
无论何时构建 stack/app 或进行生产,始终建议使用“Present”或“Installed' 状态。这是因为软件更新,无论是您的应用程序的部署,还是依赖版本升级,都与服务器配置无关,并且可能真正破坏您的生产。
您可以阅读并了解更多信息here。
在 2.x 中,installed
和 removed
被弃用,取而代之的是 present
和 absent
,并且在 Ansible 2.9
之后不再可用
我的 ansible 剧本中有以下任务:
- name: Install EPEL repo.
yum:
name: "{{ epel_repo_url }}"
state: present
register: result
until: '"failed" not in result'
retries: 5
delay: 10
我可以传递给 state 的另一个值是 "installed"。两者有什么区别?此处提供一些文档:http://docs.ansible.com/ansible/yum_module.html
它们做同样的事情,即它们是彼此的别名,请参阅 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
状态为“Present”和“Installed”可互换使用。他们都做同样的事情,即它会确保安装你需要的包 'yum'。
而 State as 'Latest' 意味着除了安装之外,如果它不是最新的可用版本,它将继续并更新。
无论何时构建 stack/app 或进行生产,始终建议使用“Present”或“Installed' 状态。这是因为软件更新,无论是您的应用程序的部署,还是依赖版本升级,都与服务器配置无关,并且可能真正破坏您的生产。
您可以阅读并了解更多信息here。
在 2.x 中,installed
和 removed
被弃用,取而代之的是 present
和 absent
,并且在 Ansible 2.9