※Ansible を始めて日が浅いので最新のバージョン(1.7.2)でしかチェックしていません。
※CentOSでしか確認していません。誰か他のOSでチェックしたらコメントに残してくれるとみんな助かっていいと思う。
日本語でAnsibleの情報をぐぐってると設定ファイルについてわかりやすく説明してくれてるところが見当たらなかったので誰かそのうち見るかもしれないと思ってメモしてみる。
書いてあることはこれで全部のはずだと思うけど、英語読むのが面倒だから日本語でぐぐるんだよね。
こまけぇこたぁいいんだよ、ばりに、こうしとけって書いてくれればいいのに、と常々思ってたので、その通り書いてみる。
とりあえず、設定ファイルは ansible.cfg って名前で、検索順序が決まってるみたいだけど、/etc とかに置かれても作業が面倒なので、自分のプロジェクトディレクトリ(管理するサーバ群のプロジェクトでgitリポジトリくらい作るでしょ?)に、おもむろに下記をコピー。
https://raw.githubusercontent.com/ansible/ansible/devel/examples/ansible.cfg
(先のリンクに乗ってます)
あとはこの ansible.cfg を置いたディレクトリで、ベストプラクティスどおりにファイルを構成すればよろしい。
要はベストプラクティスのページの一番上に ansible.cfg って書いておけばいいじゃんよって話。
そしたらこの設定ファイルの修正ポイントを書いておく(先の英語のページに書いてあることだけど)
- hostfile = ./inventory/dev
この設定ファイルから見て相対位置に Inventory ファイル(インベントリーファイルって書くなら設定名もinventoryfileとかにすればいいと思うのはダメなのかな)のパスを書いておくと、実行時にいちいち -i とかしないで済む(これは楽でいい。そしてこれがこの記事の一番おいしいところだ)
個人的に、環境毎にファイルを分けて作って、実行ミスを減らしたいので、ベストプラクティスのディレクトリ構成に、 inventory ディレクトリを作って、環境ごとのファイルを作って切り替えて使ってる。dev,sandbox,staging,share,prod など。
- timeout = 1800
ssh のタイムアウトらしい。初期構築のつもりで長いインストールを含む処理をしてると切れた時があったので、適当に長い値にした。
- log_path = /tmp/run_ansible.log
実行時ログを残す。/var/log でもいいんだけど、テスト段階では /tmp のほうが早く捨ててもらえるので位置を変えた。
- pipelining = True
sudo の設定しておかないといけないけどこっちのほうが早いらしいので。
- ansible_managed = Ansible managed: {file} modified by {uid} on {host}
日付をけずった。
値的には修正のないファイルでも変更扱いになってしまって、前記事で書いた md5 による比較が効かなくなってしまったので。
とりあえずこれ以外の値は弄らないでも問題ないみたい。むしろ弄るなって感じだけども。