はじめに
2015年も半分以上終わって、年明けに苦労してたサービスも無事ローンチされ、Ansible の再整理をする時間が取れてるくらいなので、オレオレベストプラクティスを再整理。
ってゆうことを書いていて1年間寝ていた下書きを発見したので2016年になった今頃とりあえず公開してしまうという手抜き。
2016年8月版 を書い(た)ているので、そのベースにコレが必要なので。
1月版からの主な変更点
オレオレ Ansible Best Practices 2015年1月版 からの主な変更点
- Ansible のバージョンアップに伴い ansible.cfg を少し変更
- inventory ファイルを統合して1つにした(サービスで1つのファイルのほうが管理しやすい)
- roles のうち、各機1回実行したらもうやらないようなもの(yum リポジトリやi18n設定など)を roles/init/XXX として1段下げて整理しなおした
- 各タスクから notify やサーバ別分岐などを排除して、各ファイルをすっきりさせた
説明
Ansible のバージョンアップに伴い ansible.cfg を少し変更
以前は hostfile として inventory ファイルを指定していたが、バージョンアップに伴い1.9から、 inventory となったようだ。
ただ、hostfile のままでも使えるので特に問題ない。
バージョンアップとは直接関係ないが、 forks の値を 50 にしてもしっかり動いたので、最近は 50 にしたままにしている
また、コントロール機をこっそり社内に移動して、管理下にある他のサービスのサーバも管理可能なように ssh_args に .ssh/config を渡すようにし、ssh proxy 経由でも作業できるようにした。参考
inventory ファイルを統合して1つにした
1サービスで本番、開発、共用と、NWが分かれている環境だったため、inventoryファイルをそれぞれ分けていたが、運用フェーズに入りいちいち切り替えるのが面倒になってきたので1つに統合しなおした。
プレイブック実行時に -l を付けないで実行することのほうが少ないので(たいていは単独のサーバに処理を行うため)inventoryファイル内できちんとコメントを付けて全てのサーバを管理するほうが運用的に楽
roles のうち、各機1回実行したらもうやらないようなもの(yum リポジトリやi18n設定など)を roles/init/XXX として1段下げて整理しなおした
ざっと数えて50個のロールが出来上がり、見難くなってしまったので階層を下げることにした。カテゴリ化したとも言える。
- init 初期処理用(旧phase01)
- lang 開発言語等(旧phase02)
- tools 監視ツール類(旧phase03,09)
- common 共通用(Heartbeatなど)
- web Webサーバ用(nginx,httpdなど)
- db DBサーバ用(MySQL,MHA)
- cache Cacheサーバ用(Redis,Memcachedなど)
- monitor 監視サーバ用(munin,zabbixなど)
- util 設定回収タスクなどいろいろ
って感じにした。それぞれの下にロールを丸ごと移動している。かなりすっきりして見やすくなったと思う。
各タスクから notify やサーバ別分岐などを排除して、各ファイルをすっきりさせた
1月版の時も書いたけど、タスクはシンプルなのが一番なので、インストールタスクと設定タスクは別々にした。
notifyでrestartしていたところも全部削って、シンプル化した。