tkuchikiの日記

新ブログ https://blog.tkuchiki.net

Chef

chef の role name と role ファイル名は同じにしなくてはならない

検証した環境は chef 11.16.4 ですが、 後述の通り、12-stable(2015/01/15 現在) でも同様の問題が発生すると思います。 $ cat roles/hoge_hoge.json { "name": "hoge-hoge", ... } $ cat nodes/hoge.json { ... "run_list": [ "role[hoge-hoge]" ] }ぱっと…

chef 12.2.0.alpha.0 から metadata.rb の name attribute が必須に

metadata.rb と書きましたが、metadata.json でも同様です。 以降は、便宜上 metadata.rb と記載します。 該当となる変更箇所 Add validation to Metadata · 89427a5 · opscode/chef · GitHub Make `name` a required attribute in metadata · 2577c6f · ops…

chef で Docker container を provisioning する

検証した環境は Docker 1.3.2、chef 12.0.3 ですが、 バージョンには依存していないと思います。例は、以下の様なファイル構成です。 $ tree . . ├── client.rb ├── cookbooks │ └── nginx │ └── recipes │ └── default.rb ├── Dockerfile ├── nodes │ └── n…

ohai で仮想化環境の種類を取得する

ohai の version は、8.0.1 です。仮想化環境の種類は、以下のように格納されています。 { "virtualization": { "system": "VIRTUALIZATION_TYPE" } }当然ですが、仮想環境下でなければ "virtualization" key はありません。chef で取る場合は、 node[:virtu…

chef で FileEdit を使うときは、write_file を使ってファイルを書き出さないほうが良い(かもしれない)

執筆時の chef のバージョンは以下のとおりです。 $ rpm -q chef chef-11.16.4-1.el6.x86_64chef でファイルの変更をする場合、chef/file_edit.rb at 11.16.4 · opscode/chef · GitHubを使うことで簡単に行うことができます。実際にコードを書く場合は、 fil…

chef の role name にハイフン、アンダースコア、半角英数字以外は使えない

執筆時の chef のバージョンは以下のとおりです。 $ rpm -q chef chef-11.16.4-1.el6.x86_64{ "name": "example.com", ... }のような role がある状態で、 chef を実行したら、以下のエラーがでました。 Chef::Exceptions::ValidationFailed: Option name's …

knife コマンドで cookbook(や metadata.rb, README.md) を作成するのを knife コマンド外から行う

執筆時の chef のバージョンは、以下のとおりです。 $ rpm -q chef chef-11.16.4-1.el6.x86_64chef/cookbook_create.rb at 11.16.4 · opscode/chef · GitHubをみると、 create_cookbook create_changelog create_readme create_metadata という method があ…

chef の config file を読み込んで、設定値を使用する方法

執筆時の chef のバージョンは、以下のとおりです。 $ rpm -q chef chef-11.16.4-1.el6.x86_64chef 以外から、chef の config file を読み込んで、Hash のようにアクセスする方法です。 主に、以下のコードを参照しました。 chef/config.rb at 11.16.4 · ops…

chef-solo から chef-server に移行する際に問題となる include_attribute と include_recipe の使い方

執筆時の chef-server と chef-solo のバージョンは、以下のとおりです。 $ rpm -q chef-server chef-server-11.1.6-1.el6.x86_64 $ chef-solo --version Chef: 11.16.4chef-solo だと、include_attribute と include_recipe を使っていても問題が出なかった…

chef-server-ctl reconfigure を繰り返すときの注意点

執筆時に使用した chef-server のバージョンは、以下のとおりです。 $ rpm -q chef-server chef-server-11.1.6-1.el6.x86_64 chef-server のセットアップをしている時に、 $ chef-server-ctl reconfigure を打つと、 $ ls -1 /etc/chef-server/ admin.pem ch…

Chef の Attributes を yaml に書き出す

chef の attributes を yaml に書きだそうと思ったとき、 require 'yaml' file "/path/to/file.yml" do content YAML.dump(node[:yaml]) end といったコードを思い浮かべると思いますが、 これでは以下のページのように、Object 名や、意図しない要素まで出…