knife-solo v0.5.0 から –forward-agent オプションを付けないと、
Cook に失敗するケースがありました。

例えばこのように指定します。

bundle exec knife solo cook ci-docker

bundle exec knife solo cook ci-docker –forward-agent

変更があったのはこちらの PR
https://github.com/matschaffer/knife-solo/pull/394

knife-solo では sudo が使われますが、v0.5.0 から –forward-agent
オプションを付けた場合だけ -E オプションが付くように変更されました。

sudo の -E オプションはこのようなものだそうです。

-E, --preserve-env

Indicates to the security policy that the user wishes to preserve
their existing environment variables. The security policy may
return an error if the user does not have permission to preserve
the environment.

http://www.sudo.ws/man/1.8.12/sudo.man.html

[2015-08-30-1] のケースだと、Docker の中で sudo chef-solo を実行し
ますが、その時の環境変数を引き継ぐようですね。ただ、chef-solo を実
行するユーザは root なので、そもそも sudo する意味がありません。こ
の辺り最適化できるのかな?

–forward-agent オプションが必要ないケースもあるようで、私の場合は
openjdk-7-jdk パッケージをインストール中に以下のエラーになりました。
go や nginx パッケージのインストールでは問題なし。なぜかは分かりま
せんでした…。

Creating fuse device...
makedev fuse c 10 229 root root 0660: failed
Processing triggers for libc-bin (2.19-0ubuntu6.6) ...
Extracting templates from packages: 100%
mknod: ‘fuse-’: Operation not permitted
chown: cannot access ‘/dev/fuse’: No such file or directory
dpkg: error processing package fuse (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:

追記(2015-08-30):
切り分け調査にすごく時間がかかったことを申し添えておきます。

masutaka/server-masutaka.net#169

追記(2015-09-06):
v0.5.0 にはもうひとつハマりポイントがありました。ご注意下さい。
knife-soloをアップデートしたらdockerを使ったサーバCIに失敗した - とある元SEの学習日記