毎日Learning

学んだことを共有します

td-agent環境を構築するVagrantfileを作ったときのメモ

縁あって、td-agent (Treasure Data Agent)をさわる機会があり、そのとき調べた内容を元に、Vagrantfileをつくって、環境構築が再現できるように整理した。

VagrantやChefについては、既にご存知なことを前提に書いてます。

以下の手順で実施する。

1. Vagrantfileを作成
2. td-agentをインストールするレシピを作成
3. vagrant up

実践 Vagrant

実践 Vagrant

入門Chef Solo - Infrastructure as Code

入門Chef Solo - Infrastructure as Code


では、さっそく詳細な手順を、、っとその前に、以下のファイルたちは、GitHubにうぷしたから、良ければどぜう。
moyfujii/td-agent-ubuntu1404lts · GitHub

1. Vagrantfileを作成

今回は、 Ubuntu1404LTSサーバーの64bitを対象にしてみた。*1

Vagrantfileは、以下の内容になった。

# -*- mode: ruby -*-
# vi: set ft=ruby :

VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "td-agent-ubuntu1404lts"
  config.vm.box_url = "https://cloud-images.ubuntu.com/vagrant/trusty/current/trusty-server-cloudimg-amd64-vagrant-disk1.box"

  config.vm.network "forwarded_port", guest: 8888, host: 8888

  config.vm.provision "chef_solo" do |chef|

    chef.cookbooks_path = "./cookbooks"
    chef.run_list = [
      "td-agent"
    ]
    chef.json = {
      "td-agent" => {
        apikey: "YOUR_API_KEY" # ここにapikeyを指定してね
      }
    }
  end

end

だいたいやってるのは、

  • boxの名前を、 "td-agent-ubuntu1404lts" に
  • boxとってくるurlを指定
  • ゲストの8888ポートを、ホストの8888にフォワード
  • chefで、 "locale" と "td-agent" レシピを指定
  • chefのnode["td-agent"]["apikey"]の値を指定

ってぐらい。

YOUR_API_KEYのところは、Treasure DataのアカウントのAPI KEYを指定してやってください。

2. td-agentをインストールするレシピを作成

Vagrantfileに書いてしもたし、レシピを作るわ。

本日のcookbookはこんな感じ。

▾ cookbooks/
  ▾ td-agent/
    ▾ attributes/
        default.rb
    ▾ recipes/
        default.rb
    ▾ templates/
      ▾ default/
          td-agent.conf.erb

レシピはこんな感じ。

execute "curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-precise.sh | sh" do
  not_if "test -f /etc/td-agent/td-agent.conf"
end

template "/etc/td-agent/td-agent.conf" do
  owner "root"
  group "root"
  mode 0644
end

execute "/etc/init.d/td-agent restart"

Treasure Dataが公開しているTDをインストールするためのシェルスクリプトを実行して、td-agent.confを置き換えて再起動してる。

3. vagrant up

で、

$ vagrant up

を実行するといい感じに起動できるはず。

その後、

$ vagrant ssh

してSSH接続し、

$ td account
$ td db:list

みたいな感じでうまいこと接続できたらいけてる。

いけん場合は、API KEYがちゃんと指定できてないとかが考えられる。

以上です!

*1:td-agentは公式にUbuntu1204LTSまで対応しているらしいが、1404LTSでもいけたしいっかって感じで。