LoginSignup
5
3

More than 5 years have passed since last update.

Ansibleでgitの更新の時のみコマンド実行

Posted at

最近ChefからAnsibleに移ってきたのですが、git周りで少し手こずったので、ここでまとめておきます。

gitのレポジトリを更新する時に、新しくなった場合のみコマンドを実行し、それ以外の時は何もしないようにしたかったのですが、ドキュメンテーションを見てもあんまりそれらしい情報が見つかりませんでした。

ソースコードを少し見てみたら、registerを使う場合はmyvar.changedでレポジトリが変わったかどうかを判定できることが分かったので、こんな感じで書くことができました。

- name: Fetch project
  git: repo={{ repository }} accept_hostkey=yes dest={{ project_dir }}
  register: gitclone

- name: Build project
  command: make
  when: gitclone.changed
  args:
    chdir: "{{ project_dir }}"

registerを使う時はどのような値が使えるかがドキュメンテーションを読んでもあんまり分からなかったのですが、各モジュールのソースコードでmodule.exit_jsonを探せば分かるようです。例えばgitモジュールを見るとchangedが設定されてることが分かります。

5
3
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
5
3