この記事はAnsible Advent Calendar 2015の14日目の記事です。
新しく買ったRaspberryPi2にfluentdをインストールしました。
その際にインストールなどの作業をAnsibleで自動化したので公開します。
- Github
使ったもの
-
Ansible
- 構成管理ツール
- YAMLファイルにサーバーの構成情報(必要なソフトウェアなど)を記載しておくと、その通りにサーバーを設定してくれるツールです。
- 構成管理ツール
-
Serverspec
- サーバー自動テストツール
- サーバーのあるべき状態(どのプロセスが動いている、など)をRubyのコード(といってもほとんどDSL)として書くことで、サーバーの状態があるべき状態になっているかチェックしてくれるツールです。
- サーバー自動テストツール
-
Ansible-spec
- Serverspecのテスト実行先の指定として、Ansibleのinventoryファイルに書かれているホストを利用できるようにするパッケージです。
設定内容
スクリプトを流すことで、以下の設定を自動で行い、さらに正しく設定されているかテストしてくれます。
- roles/common
- aptパッケージのアップデート
- Raspberry Piのファームウェアのアップデート
- Linuxの基本的な設定
- 時刻・言語を日本語へ
- ファイルディスクリプタの最大値を上げる
- ntpd, iptableの起動・設定
- sshdのセキュリティ設定
- roles/rbenv
- rbenv / rubyのインストール
- roles/supervisord
- supervisordのインストールと起動
- roles/fluentd
- fluentdのインストール
- 基本的なプラグインのインストール
- supervisordによるデーモン化
冪等性があるので、何回流しても問題ありません。
ただしパッケージ・ファームウェアなどは最新版へアップデートされます。
使い方
準備
- Raspberry PiへRasbian OS(WHEEZY)をインストール
- 公開鍵認証でアクセスできるように設定
git clone git@github.com:mia-0032/raspberrypi-fluentd-ansible.git
-
raspberry_pi.sample
ファイルをraspberry_pi
へリネームし、RaspberryPiのホスト、SSHポート、SSHユーザーを変更する。 - もしPC側にAnsibleやServerspecが入ってない場合はインストールする。
$ pip install -r requirements.txt
$ bundle install
実行
PCで以下のコマンドを実行します。
$ ansible-playbook -i raspberry_pi site.yml
$ bundle exec rake serverspec:fluentd
全部OKかChangedであれば成功です。
初回実行時はRubyのビルドに非常に時間がかかる(1時間くらい?)ので注意してください。
まとめ
- 自動化しておくと、OSを再インストールする時に非常に便利です。
- コードに落とし込んでおくことで、しばらく経ったあとに、どんな設定したのか忘れてしまう恐れもなくなるので良いですね。