エラーメッセージは以下のようなもの。
FATAL: Encoding::UndefinedConversionError: "\x8B" from ASCII-8BIT to UTF-8
確認してみたところ、json への変換部分でエラーになっている模様。
lib/chef/node.rb # Serialize this object as a hash def to_json(*a) result = { "name" => name, "chef_environment" => chef_environment, 'json_class' => self.class.name, "automatic" => automatic_attrs, "normal" => normal_attrs, "chef_type" => "node", "default" => default_attrs, "override" => override_attrs, #Render correctly for run_list items so malformed json does not result "run_list" => run_list.run_list.map { |item| item.to_s } } result["_rev"] = couchdb_rev if couchdb_rev result.to_json(*a) endresult の中身で "\x8B" が入っているところを探すと、userdata の部分にありました。
{ ... "userdata"=>"\x1F\x8B ... }
どうやら、user-data を作成する際に圧縮をしていたため、userdata にバイナリのデータが入っていたことが原因のようです。
CloudInit のページを参考に、user-data を圧縮していたのですが、16KB のサイズ制限を超えているわけでもないので、圧縮しないことで回避することにしました。
user-data の内容は、Node の Attribute に含まれていて、chef-server で Attribute を表示するためなどの目的で、json へ変換しているのですね。