chefを使って、uchiwaのインストールする

前回の続きで、 sensu-adminをインストールした 手順を公開しようかと思ったが、uchiwaを見かけて、こちらの方が見た目が良かったので、uchiwaをchefを使用してインストールしてみた。

Berkshelfに追加

cookbookが公開されていたので、そちらを使用する事にした。
Berksfileに以下を追記。

cookbook 'nginx'
cookbook 'uchiwa', '~> 0.4.3'

nginxは必須ではないが、プロキシとして使用するためインストール。

cookbookを作成する

nginxを使用せず、uchiwa単体で動かす場合は、Berksfileに追加してknifeを実行すれば、インストール完了し、 使用できるようになる。
しかし、今回はnginxと連携させるため、連携用のcookbookを作成する。

bundle exec knife cookbook create uchiwa -o site-cookbooks

recipes/default.rb は削除する。
(berkshelfでインストールしたnginxのdefault.rbを使用するため)
nginxに依存するので、metadata.rbに以下を追記する

depends 'nginx'

次にnginxをインストールするため、以下の内容のrecipes/nginx.rb を作成する。

include_recipe 'nginx::default'

# このテンプレートにuchiwaとの連携の設定を記述する。
template "#{node.nginx.dir}/conf.d/default.conf" do
  owner "root"
  group "root"
  mode 0644
  notifies :restart, "service[nginx]"
end

設定ファイルのテンプレートとして、templates/default/default.conf を作成し、以下を記述する。 最低限の設定をとりあえず記述。(ホストとポートくらいは外だしにした方が良いと思うが、今回は割愛。)

公式のサイトには、proxy_http_version 1.1; が書かれていたが、 設定に書くとnginxが起動しないので、とりあえず削除した。

 server {
  listen                80;
  server_name           _;

  location / {
    proxy_pass http://localhost:3000;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
  }
}

次に、uchiwaのデフォルトのrecipeと今回作成したnginxのrecipeを実行するための、 recipeを recipes/app.rbに作成。

include_recipe "#{@cookbook_name}::default"
include_recipe "#{@cookbook_name}::nginx"

でこれを、runlistに recipe[uchiwa::app] を追記して実行するれば、uchiwaのインストールが完了するはず。

アクセスすると、認証がかかっているので、

  • ユーザー名: admin
  • パスワード: supersecret

を入力すればログインできるはず。

使用感などは、また今度かな。