Chef SoloがRaspberry Pi(Raspbian)で動くのか試してみた。#303 の対応により0.4.0からRaspbianがサポートされている。
というわけで実行してみる。なおChef Soloをリモートで実行する場合Raspbianに限ったことではないが事前にsshでパスワードなしで接続でき、さらにsudoがパスワードなしで実行できる必要がある。
$ knife solo prepare rpi
Bootstrapping Chef...
ERROR: SyntaxError: (eval):1: Invalid char `\x1B' in expression
(eval):1: Invalid char `\x1B' in expression
(eval):1: syntax error, unexpected $end, expecting ']'
KnifeSolo::Bootstraps::Linux
しかしリモートでのChef Soloの環境構築がうまくいかない。少しデバッグしてみると
"\e(B\e[m"
"Debian GNU/Linux 7 \\n \\l"
"\r\n"
sshの出力が何かおかしい。sshでcat /etc/issue
やuname -s
などを実行してOSを判定してセットアップするようだがRaspbianと判定されておらず、さらに余計なゴミが入っているためstripで改行は除去しているが\e(B\e[m
が残るのでevalでKnifeSolo::Bootstraps::$os
のようにしてクラスを参照する部分が動いていない。
まずRaspbianのシステムをアップデートし、 /etc/issue
が更新されたことを確認。
$ sudo apt-get update
$ sudo apt-get upgrade
$ cat /etc/issue
Raspbian GNU/Linux 7 \n \l
ゴミデータについては、内容から察するにどうもpromptで余計なことをしているのが原因っぽい。gitのbranchとかいろいろ出力する自前のdotfilesを作っていてそれをそのままRaspbianにも使っていたがやり過ぎたようなので.profileから外したところうまく動くようになった。
さて気になるのがohaiによるプラットフォーム判定。
key | value |
---|---|
platform | raspbian |
platform_version | 7.2 |
platform_family | debian |
RaspbianってDebianのバージョンに揃えてるんだっけか。とりあえず自分でレシピを書く分にはplatform_familyがdebianなのでそれで十分。これでRaspberry PiもChef Soloでセットアップできそうだ。