2016-05-03 14 views
0

条件付きアクションを実行するとします。 実行前と実行後の条件付きでの実行中

    1. にglibcライブラリが更新された場合は、チェックが、その場合、下記のスキップはこれまでのところ、私は次の操作を行うことができます
    2. 停止MongoDBの
    3. 更新のglibc
    4. 再起動のLinux

    ステップ:

    - name: install updated glibc 
        yum: name=glibc-2.12-1.166.el6_8.0.x86_64 state=present 
        sudo: yes 
        notify: 
        - stop mongodb 
        - restart vm 
    

    私は後続のアクションが、私はglibcを更新する前にmongodbを停止したい。ご覧のように、私は希望の順序を実行することができません。

    私は、安全なドキュメントとスタックオーバーフローボードを見ていましたが、これを達成する方法について私が探していたものが見つかりませんでした。これは不可能なことで成し遂げられますか?これらのような単一の更新に使用する必要がありますか?

    ありがとうございました!

  • +0

    これは、Google検索の最初の結果でした:https://raymii.org/s/tutorials/Ansible_-_Only-do-something-if-another-action-changed.html私はまだ自分でそれをテストしていないが、あなたが探しているもののように聞こえる。 –

    +0

    ありがとう、これは私が探していたものです。私は間違った言葉を探したに違いない。 –

    +0

    私は "変更された場合は通知する"を検索しました。ところで、これが正しい解決策であり、それをテストした後、あなた自身の質問に答えることができます(同じ必要性があるかもしれない他のユーザーのために)。 –

    答えて

    0

    ここでの唯一のオプションは、以前のバージョンの比較です。そのため、インストールされているバージョンとインストールされているバージョンを手動で確認する必要があります。ここでは、これをgitのために一度やって、glibcのためにすばやく書き直した例があります。もう少し作業が必要になるかもしれませんが、どうやったらいいか分かります。

    --- 
    
    - name: Detect latest available glibc version 
        shell: "`which yum` info glibc | grep Version | rev | cut -d' ' -f1 | rev" 
        changed_when: false 
        register: glibc_install_latest_version 
    
    - name: Detect currenty installed glibc version 
        shell: "ldd --version | head -n 1 | cut -d' ' -f4" 
        changed_when: false 
        register: glibc_install_current_version 
    
    - name: Stop mongo! 
        ... 
        when: glibc_install_latest_version.stdout != glibc_install_current_version.stdout 
    
    - name: "Install latest version of glibc" 
        yum: 
        name: glibc 
        state: latest 
        update_cache: yes 
        become: yes 
        when: glibc_install_latest_version.stdout != glibc_install_current_version.stdout 
    
    ... 
    

    再起動は、引き続きハンドラによってトリガされます。

    +0

    ありがとう、これは私が探していたものです! anumがyumモジュールのバージョンチェックをサポートしていないことは残念です。 –

    +0

    "state = xxx"プロパティは不要であると付け加えたいと思います。したがって、yumパッケージモジュールを使用して、パッケージがインストールされているかどうかを確認することができます。これは私の問題を解決します。 –

    関連する問題