ansibleでroleから抜ける方法はありますか?

投稿者: Anonymous

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

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

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

- 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

...

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

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

解決

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

- 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: ...
回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *