LoginSignup
14
15

More than 5 years have passed since last update.

オレオレ Ansible Best Practices 2016年8月版

Posted at

はじめに

前回 から1年以上も開いてまだ Ansible のベストプラクティスを追いかけています。。。
てゆうか、去年ベストプラクティス第二段 を書いてたんだけど下書きにして放置してたみたいなのでさっき公開したw

今はまた変わって、 ansible-galaxy に移ってみたので、そこらへん。。。

概要

  • 1プロジェクト数十台規模の複数プロジェクト管理向け(仕事が増えましたw)
  • 丸コピーやめた(ロールや設定のずれが気になってしょうがないので)
  • 基本的にロールは Github -> Travis CI(Docker&ServerSpec) -> ansible-galaxy で管理することにした
  • システムワイドでもアカウントローカルでもOK
  • インベントリや設定値、なにより playbook はプライベートリポジトリに
  • プロジェクト別インベントリ

ざっくり

ansible.cfg
inventory/
  group_vars/
    project-a-prod-web
    project-a-prod-db
    project-a-stg-web
  host_vars/
    project-a-host
  project-a
  project-b
playbooks/
  project-a-prod-web.yml
roles/
  galaxyに上げる前のロールとか
  プライベートなロール
templates/
vars/

ボイラープレート的には前回とそんなには変わってない。
前述のとおりロールを galaxy に押し出したので、roles の下は結構すっきりさせた。
他のメンバーも含めてみんなで使うロールはシステムワイドにおいて、個人的なロールを roles に配置した。

require.yml
- officel.selinux
- officel.timezone
- officel.yum-repos
- officel.yum-default
- officel.service-stop

あ、Office L はうちの屋号すw 職場のアカウントは別にある。
あとコレらは CentOS 6 と 7 でしかチェックしていない(弊社CentOS6しか使っていないので)。

で、↑こんな感じの yaml を書いて、

$ ansible-galaxy install -r require.yml -p .

みたいにすると、まとめてインストールされる。
-p . をつけばければシステム側にインストールされる。

ansible.cfg で roles_path = /etc/ansible/roles:roles ってすることで、システムワイドとローカルの両方のロールディレクトリが有効。

プロジェクト.yml とか、グループ単位で工夫しながら playbook を書くようにして、設定変更は(ロールのデフォルト値と違うものにするのは) playbook 中に書くようにした。
結局それが一番ずれないし、対象のサーバを作った時の設定が見えやすいし、変更も容易なので。
コマンドラインレベルで --list-hosts とか --tags とか多用して管理してるのでそこだけもうちょっとなんとかできないかと思ってるけど、まだいい感じにはなっていない。
複数プロジェクト見てると仕方ないかも。

ansible-galaxy

Github -> Travis CI(Docker&ServerSpec) -> ansible-galaxy にしたのは、この先のため。あともろもろ。

  • プロジェクトのOSをCentOS6系に固定していたけど7系にしていく?かもしれない
  • プライベートクラウドからAWSへの乗せ変えするかも
  • Docker 勉強するにあたってコストかけたくない
  • ロールを外に出して共有することで少しでもフィードバックあったらいいなという下心
  • 会社の技術公開の一環
  • ロールのローカルテストは時間食いすぎる(Travisにすると時短がすごい)
  • galaxy のサイトでロール探すと目的に即したものを探すの難しいので、

playbook

最近はサーバを作るためのPBを書いてそれをコミットして残すようにしてる感じ。
もちろん同じになるはずのサーバは同じPBを使いまわすけど、プロジェクト、サーバの種類、環境とかに合わせて別にしている。
なんだかんだいって、変数とかで自由度を上げるより、その時どういう状態で作ったか、がちゃんとわかるほうが運用的に楽だった。
PB中の vars_file とかで読み込みファイルを変えて運用するのもありっちゃあり。
設定ファイルを送りつけたり、ユーザ作成したりって処理のロール(タスク)は同じだけど、扱う値が違うものは読み込むファイルをプロジェクト別にしておくだけでだいたいまかなえた。

今後

まだまだgalaxyにもっていけてないロールがたくさんあるので、運用でテストしながらちょっとずつ移行予定。
秘伝のたれ化した現在のロールを解体して作り直すのはちょっと面倒だけど、ちゃんとテストがかけて、OS毎のチェックもできるのは便利だしやりがいありそう。あるかな。あるよね。
あと、運用中に発生した課題や構成の工夫、設定の内容とかもできるだけ押し出して共有できたらいいな。

14
15
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
14
15