knife-soloを使ってmackerel-agentを一撃でインストールする
はじめに
先日[レポート]「Mackerelによる簡単サーバー管理入門と発展形」 at 第21回さくらの夕べ in 札幌に参加してきたのを機に改めてmackerelに興味を持ったので、早速使ってみることにしました。今回はmackerel-agentのセットアップをknife-soloを使ってやってみたいと思います。
やってみる
mackerelのアカウントを作成する
mackerelのWebサイトの右上の[無料アカウントを作成]のボタンからアカウントを作成します。最初の1ヶ月間は無料、その後もFreeプランというのがあるので怖くないです。サクッと作りましょう。
アカウントを作成し、初めてログインした状態のmackerelコンソールです。Smokeymonkeyというオガーニゼーションが1つだけある状態で、ServicesもRoleもありません。
オーガニゼーションのAPIキーを確認する
mackerel-agentをmackerelに登録するためには、登録対象のオーガニゼーションのAPIキーが必要です。オーガニゼーションの[詳細]をクリックします。
オーガニゼーションの概要ページを開くと、下部に[APIキー]が表示されます。これが後ほどのrecipeで必要になります。
knife-soloのレシピ環境を整える
そもそもknife-solo環境が整備されていない場合は、MBAで以下のように環境を整えます。
$ gem install chef $ knife configure $ gem install knife-solo $ knife solo init chef-repo
次にGithubに公開されているcookbook-mackerel-agentを取得...するのですが、他のcookbooks(yumとapt)との依存があるので、面倒臭いからBerkshelfを使ってごそっと用意します。
$ gem install berkshelf $ cd ~/chef-repo/ $ vi Berksfile source 'https://supermarket.getchef.com' cookbook 'mackerel-agent', git: 'https://github.com/mackerelio/cookbook-mackerel-agent.git', tag: 'v1.0.0' $ berks vendor cookbooks
今回はバッチサーバをセットアップすると想定し、rolesの下にbatch.jsonというファイルを作成します。YOUR_ORG_APIに先ほど確認したオーガニゼーションのAPIキーを入力します。rolesでは[サービス名:サーバ名]という形で設定します。今回はBatchサービスの中のbatch1というサーバであると想定しています。 他にバッチサーバとしてインストールしたいことやセットアップしたいことがあれば、このファイルに追加していきます。
$ vi roles/batch.json { "name" : "batch", "json_class": "Chef::Role", "override_attributes" : { "mackerel-agent" : { "conf" : { "apikey" : "<YOUR_ORG_API>", "roles" : ["Batch:batch1"] } } }, "run_list": [ "mackerel-agent" ] }
そうすると、こんな感じのディレクトリ構成になったかと思います。
. ├── Berksfile ├── cookbooks │ ├── apt │ ├── mackerel-agent │ └── yum ├── data_bags ├── environments ├── nodes ├── roles └── batch.json
knife-soloを実行する
さて、本題です。まずはprepareで対象サーバにchefをインストールします。
$ knife solo prepare -i ~/.ssh/mykey.pem [email protected]
するとnodesフォルダの下にファイルが作成されるので、修正します。具体的にはrun_listで"role[batch]"が呼ばれるようにします。
$ vi nodes/192.168.0.1.json { "run_list": [ "role[batch]" ] }
では実行!cookします!
$ knife solo cook -i ~/.ssh/mykey.pem [email protected] Running handlers: Running handlers complete Chef Client finished, 3/10 resources updated in 8.231115224 seconds
できました!
mackerelコンソールを確認すると、ちゃんと登録されていますね!
さいごに
ということで、とりあえず使い始めてみました。今後もいろいろ試してブログにしてみたいと思います。