0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

ansibleのshellモジュールで冪等性を保つ

Last updated at Posted at 2022-03-16
  • shellモジュール、commandモジュールはとても便利といか力技でなんでもできるけれど、冪等性のチェックが行われずに、とくに気をつかわなければ常時実行されChangeとなってしまう
  • たとえば参照系のものであれば別段問題はないけれど、書き込み系のコマンドを重ねがけするのはあまりよろしくない
  • そういう場合は自前でチェックするセクションを作る

registerwhenを組み合わせると良い

コマンドチェックするほうのセクション(Check install npm)

  • registerをつけることで、指定した値にそのセクションの実行結果をしまうことができる
  • 以下のようなサブオプションが格納される
    • rc
      • リターンコード
    • stderr
      • 標準エラー
    • stdout
      • 標準出力
    • stdout_lines
      • 改行ありの標準出力
  • changed_when: falseにより、このセクションが実行されてもOK扱いになる
  • failed_when: falseにより、このセクションでどのような実行結果となってもエラーとはならない

コマンドインストールする方のセクション(Install npm)

  • whenで実行するか否かを指定できる
  • 今回は、npm_pathに格納された標準出力結果が、/usr/bin/npmでなければ実行する
  • 一度目の実行では、whichの見つからなかったメッセージが入るので実行される

npmをインストールする例

- name: Check install npm
  shell: |
    /usr/bin/which npm
  register: npm_path
  changed_when: false
  failed_when: false

- name: Install npm
  shell: |
    curl -sL https://rpm.nodesource.com/setup_14.x | bash -
  args:
    chdir: /tmp
  when: npm_path.stdout != "/usr/bin/npm"

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?