60087


現在Ansibleであるソフトをインストールするroleを書いているのですが、もしインストールされていれば後続のロールの処理をスキップする、というような処理を書きたいです。

これは私の知る方法では、まずインストールされているかどうかをチェックしてその結果を変数に入れる。その後、後続の処理全てにwhenを書けばできなくはないと思います。  
しかしこの方法は後続の処理全てにwhenを書かなければいけないため、もっと良い方法がないか悩んでいます。

全てにwhenを書いた場合の例を書くと、

[code]

    - name: Is hoge Installed?
      shell: type hoge
      failed_when: false
      changed_when: result.rc not in [0]
      register: result
    
    - name: a
      when: result.changed
    
    - name: b
      when: result.changed
    
    - name: c
      when: result.changed
    
    ...
    
[/code]

このような感じになってしまいます。

他に良い方法はないでしょうか？  
ご回答お待ちしております。


CC BY-SA 4.0
2019-10-29T09:06:19.087
60070
2019-10-31T07:49:13.820
2019-10-31T07:49:13.820
15186
15186
question
ansible
ansibleでroleから抜ける方法はありますか？


「roleから抜ける」とはrole内でのmain.yml内の記述の中で完結する場合という認識で合ってますか？  
であれば、「block」でまとめればwhenを1回書くだけで済みます。

[code]

    - name: Is hoge Installed?
      shell: type hoge
      register: result
    
    - name: do somethings if result changed
      block:
      when: result.changed
      - name: a
        something: ...
      - name: b
        something: ...
      - name: c
        something: ...
    
[/code]


CC BY-SA 4.0
2019-10-29T13:04:15.433
60087
2019-10-29T13:04:15.433
30745
60070
answer