我的ansible剧本中有以下任务:
start = doc.at_xpath("//w:p[.//w:t[contains(., '#StartHere#')]]")
stop = doc.at_xpath("//w:p[.//w:t[contains(., '#StopHere#')]]")
我可以传递给州的另一个值是"已安装"。两者有什么区别?这里提供了一些文档:http://docs.ansible.com/ansible/yum_module.html
答案 0 :(得分:14)
状态为“存在”和“已安装”可互换使用。它们都做同样的事情,即它将确保安装你的案例'yum'中的所需包。
状态为“最新”表示除了安装之外,如果它不是最新的可用版本,它将继续更新。
每当您构建堆栈/应用程序或进行生产时,始终建议使用“存在”或“已安装”状态。这是因为软件更新,无论是您的应用程序部署还是依赖版本,它与服务器配置无关,并且可能真正破坏您的生产。
您可以阅读并了解有关它的更多信息here。
答案 1 :(得分:13)
他们做同样的事情,他们是彼此的别名,在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
答案 2 :(得分:0)
在2.x版本中,installed
和removed
被弃用,而被present
和absent
取代,在Ansible 2.9之后不再可用