たふがいの爛漫日記

後輩mkのAdvent Calendar 2017に参加してみた

Ansibleでリモート先のファイルのdiffをとりたい

ごきげんよう、エンジニア2年目のさくーんです。

 

早速ですが、現在Ansibleをたくさん触ったので議事録として残そうと思います。

 

リモート先のファイルの比較をしたい

 - hosts : host_name
tasks :
- name : diffしてみる
shell : diff /etc/hosts /home/・・・/host_backup/hosts
register : diff_result
failed_when : diff_result.rc not in [0,1]
- name : 判定
debug :
msg : 'backup success'
when : diff_result.rc == 0
- name : 判定
debug :
msg : 'backup failed'
when : diff_result.rc == 1

 failed_whenがないとshellの行でエラーとなり停止してしまう。。。

 

 

ignore_errorsを使うとFaildになりつつも次にすすんだ。

failed_whenは、failed_whenのあとに続く条件に引っかかった時にFailedにする。
例えば、コマンドの戻り値が異常なときをキャッチしてplaybookの実行を止めるときにつかうそうだ。

今回は、こちら方がやりたいことを実現できそうでしたので、こちらを使用しよう。

 

rc -> リターンコードってこと

diffコマンドを知ればわかることみたいだね

差分がなし -> 0

差分が有れば -> 1

失敗したら -> 2

 

なるほど。なんとなくわかったきがしたので、今回はここでおしまい。

 

「Ansibleを使用して、リモート先のファイル同士を比較するための方法」ってことでした。