centos Ansible的yum模块中提供的两个“state”选项值“present”和“installed”之间有什么区别?

kse8i1jr  于 2022-11-07  发布在  其他
关注(0)|答案(3)|浏览(601)

在我的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

wecizke3

wecizke31#

状态'Present'和'Installed'可互换使用。它们的作用相同,即确保安装了您的案例'yum'中所需的软件包。
状态为“最新”表示除安装之外,如果不是最新的可用版本,则将继续进行更新。
无论您何时构建堆栈/应用或进行生产,建议始终使用“Present”或“Installed”状态。这是因为软件更新(无论是应用的部署还是依赖项版本升级)与服务器配置无关,并且可能会真正中断您的生产。
你可以在这里阅读和了解更多。

tnkciper

tnkciper2#

它们的作用是一样的,即它们是彼此的别名,请参见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

pqwbnv8z

pqwbnv8z3#

在2.x中,installedremoved被弃用,而支持presentabsent,并且在Ansible 2.9之后不再可用

相关问题