21

私のansibleプレイブックには次のタスクがあります。

- name: Install EPEL repo.
  yum:
    name: "{{ epel_repo_url }}"
    state: present
    register: result
    until: '"failed" not in result'
    retries: 5
    delay: 10

状態に渡すことができる別の値は「インストール済み」です。2つの違いは何ですか?ここで入手できるいくつかのドキュメント: http://docs.ansible.com/ansible/yum_module.html

4

3 に答える 3

22

Present」と「Installed」の状態は同じ意味で使用されます。どちらも同じことを行います。つまり、ケース「yum」に目的のパッケージがインストールされていることを確認します。

最新」の状態は、インストールに加えて、利用可能な最新バージョンでない場合は、先に進んで更新することを意味します。

スタック/アプリを構築している場合、または本番環境で作業している場合は常に、' Present ' または ' Installed ' 状態を使用することをお勧めします。これは、アプリのデプロイであろうと、依存関係のバージョンの増加であろうと、ソフトウェアの更新はサーバー構成とは何の関係もなく、本番環境を実際に壊す可能性があるためです。

詳しくはこちらを読んで理解してください

于 2016-11-03T22:40:54.627 に答える
17

これらは同じことを行います。つまり、お互いのエイリアスです。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

于 2016-11-03T20:23:47.377 に答える