今迄、knife soloを使っていたけれどもメインサーバ移設に併せてknife zeroに移行しようと試験中。
基本はDockerになるのでDockerを動かす基盤としてのプロビジョニングのみ。なので、さくっと終わるかと思ったらそこそこてまどっています。簡単に解決できたものも含めてメモ。
ChefDKとrbenb併用しているとrubyのパスがrbenvを向いている(ことが多い)。knife zeloをgemで入れてもrbenvの方を向いてしまいknife zeroが動かない。
「Knife-ZeroをマスターしてChef Soloの引退に備えよう!」を参考に修正。
自分はrubyの開発は今のところしないのでrbenvを削除。
knife zero bootstrap ホスト名 だとパーミッションではじかれる。
base7 and any other relevant details that might help us with troubleshooting. base7 base7 mkdir: ディレクトリ `/etc/chef' を作成できません: 許可がありません base7 sh: 行 179: /etc/chef/validation.pem: そのようなファイルやディレクトリはありません
–sudoオプションが必要
vagrantで(名前解決しないで?)Nオプションをつけないと、nodes/localhost.jsonになる。名前解決できない状態では、host名をnode名.jsonから(?)逆引きする設定をしないと動かないようなのでlocalhostとしてしまうと2つvagfrantをあげると混乱する。
knife zero bootstrap base7 -N base7 --sudo
名前解決していない状態ではホスト名指定のconvergeでは動かない。
knife zero converge base7 --sudo FATAL: No nodes returned from search ※ base7は~/.ssh/config に設定
knife soloではbase7はsshの接続情報だったが、knife zeloではデフォルトでは一度ホスト名として名前解決にいっているということか??
nodesのjsonを見てやるようにオプション指定をすることで回避
knife zero converge -a knife_zero.host "name:base7" --sudo
base7 [2017-04-26T02:34:28+00:00] INFO: Forking chef instance to converge...
base7 Starting Chef Client, version 12.19.36
name:ホスト名でknife zeloで設定されているもの(node/json)を使用するらしい。
同じサーバに名前を付けてlocalhost.jsonとbase7_2.jsonがあった状態で”name:localhost”を指定したらbase7_2.jsonが読み込まれたと思われる動きをした。jsonファイル名を見ている訳ではなさそうなので注意。(いま深堀りする必要ないので、取り敢えず名前付きのみで運用)
[2017-04-26T02:47:09+00:00] INFO: Running queued delayed notifications before re-raising exception
base7
base7 Running handlers:
base7 [2017-04-26T02:47:09+00:00] ERROR: Running exception handlers
base7 Running handlers complete
base7 [2017-04-26T02:47:09+00:00] ERROR: Exception handlers complete
base7 Chef Client failed. 0 resources updated in 13 seconds
base7 [2017-04-26T02:47:09+00:00] FATAL: Stacktrace dumped to /var/chef/cache/chef-stacktrace.out
base7 [2017-04-26T02:47:09+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
base7 [2017-04-26T02:47:09+00:00] ERROR: yum_package[nginx] (nginx::default line 10) had an error: Chef::Exceptions::Package: No candidate version available for nginx
base7 [2017-04-26T02:47:09+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)
パッケージない時のエラーメッセージ、結構下の方に出ているのでぱっとみ見落としやすい