Chef-Soloを卒業してChef-Zero(localmode)エラーまとめ
こんにちは。smallpalaceです。
このブログのトップアクセス記事がなんだかchefのエラーまとめ記事なので、2番煎じでzeroというかlocalmodeへの移行時に右往左往したエラーの記録をまとめてみようかと。
最近ibisPaintが便利な記事を見かけてスマホで指でちまちま図をかいてみたっす。
この図ではknife solo がknife zero に変わるみたいになってるけどsoloもlocalモードに対応予定で待ち切れなかったらrsyncかssh越しにpullしてchef-client をssh越しにたたくんでもだいじょぶかと思いました。
chef-zeroを自分で起動してるのはインメモリchef-serverとして使おうとしてるやつで、localmodeは-z つけるかknife.rbにlocal_mode true他とか書いとけば内部的に実行時だけchef-zeroが起動するかんじ。
解説は他のサイトのが詳しいので見分け方のあとは遭遇したエラーだけのせときます。
ERROR: ArgumentError: Cannot sign the request without a client name, check that :node_name is assigned
→knifeコマンド実行時、knife.rbのnode_nameを定義していない
ERROR: ArgumentErrorCould not parse PKey: no start line
→ユーザ認証と鍵まわりのエラー。現在と異なるユーザで接続しようとすると出る感じだった。あと、iオプションで指定する鍵はchefrepoのknife.rbに書いたやつ指定するかんじですね。
ERROR: Connection refused connecting to http://10.xxx.xxx.xxx:8889/clients
→knifeコマンド実行時、-zを付けてなくて既に起動してるchef-zeroにつなぎにいこうとして出た。
ERROR: The object you are looking for could not be found
→knifeコマンド実行時、typoでそんなオブジェクトはありませんと言われた。
No secret specified to load_secret and no secret found at /etc/chef/encrypted_data_bag_secret
→data_bags用の鍵の置き忘れ(と依存のあるcookbookの置き忘れにも注意)
Permission denied @ rb_sysopen - /usr/local/sbin/xxxxx
→data_bag_keyが認識できてないエラーと思いオプションをよく見たところ-sが必要そうだった。
data_bagsの鍵の名前でなくて内容を指定する必要があるようだった。
knife zero bootstrapに、-s $(cat /path_to_databags_key) を付けると解決。
cat: ./databagkey: そのようなファイルやディレクトリはありません
ERROR: Permission denied - /var/chef/cache/chef-client-running.pid
→knife zero bootstrapでdata_bagの鍵のパスの指定まちがえてた。
あとキャッシュディレクトリのパーミッションがsudoのあとに微妙になってた。
Chef encountered an error attempting to load the node data for
ERROR: bad URI(is not URI?): http://localhost:8889/reports/nodes/xxxxxx
→knife.rbとclient.rbにnode_name `uname -n`とか書いてたのが原因と思われる
両方消してsudoもつけたらchef-clientが成功。
$ sudo chef-client -z -r role[romename] -E environmentname
→knifeコマンド実行時、knife.rbのnode_nameを定義していない
ERROR: ArgumentErrorCould not parse PKey: no start line
→ユーザ認証と鍵まわりのエラー。現在と異なるユーザで接続しようとすると出る感じだった。あと、iオプションで指定する鍵はchefrepoのknife.rbに書いたやつ指定するかんじですね。
ERROR: Connection refused connecting to http://10.xxx.xxx.xxx:8889/clients
→knifeコマンド実行時、-zを付けてなくて既に起動してるchef-zeroにつなぎにいこうとして出た。
ERROR: The object you are looking for could not be found
→knifeコマンド実行時、typoでそんなオブジェクトはありませんと言われた。
No secret specified to load_secret and no secret found at /etc/chef/encrypted_data_bag_secret
→data_bags用の鍵の置き忘れ(と依存のあるcookbookの置き忘れにも注意)
Permission denied @ rb_sysopen - /usr/local/sbin/xxxxx
→data_bag_keyが認識できてないエラーと思いオプションをよく見たところ-sが必要そうだった。
data_bagsの鍵の名前でなくて内容を指定する必要があるようだった。
knife zero bootstrapに、-s $(cat /path_to_databags_key) を付けると解決。
cat: ./databagkey: そのようなファイルやディレクトリはありません
ERROR: Permission denied - /var/chef/cache/chef-client-running.pid
→knife zero bootstrapでdata_bagの鍵のパスの指定まちがえてた。
あとキャッシュディレクトリのパーミッションがsudoのあとに微妙になってた。
Chef encountered an error attempting to load the node data for
ERROR: bad URI(is not URI?): http://localhost:8889/reports/nodes/xxxxxx
→knife.rbとclient.rbにnode_name `uname -n`とか書いてたのが原因と思われる
両方消してsudoもつけたらchef-clientが成功。
$ sudo chef-client -z -r role[romename] -E environmentname
もっとくわしいやってみた記事はPV乞食的に会社のブログのほうに書くと思います。たぶん。
かいた↓
ではみていただいてありがとうございました。