タイトルの通りレシピ開発中にハマったのでメモ。
1.作業環境
PC: windows7
VM: vagrantVMを作って、ターミナルからssh接続
chef: chef zero
2.レシピ追加/削除
knife node run_list add "vm-name" recipe["cookbook-name"] (default.rbのレシピを指定)
knife node run_list add "vm-name" recipe["cookbook-name::hogehoge"] (hogehoge.rbというレシピを指定)
knife node run_list remove "vm-name" recipe["cookbook-name"]
3.ロール追加/削除
注意) ロール追加のコマンドknife node run_list add
が、windowsだとちゃんと動いてくれない(> <)。解決策は以下の通り。
knife node run_list add vm-name "role[test_role001]"
vm-name:
run_list: recipe[roles]
なぜかこんな意味不明な結果になり、run_listにロールが追加されないです。
この記事
に解決策がありました。
曰く、role[ ]
を""
で囲うのではなく''
で囲む。さらに[]
の後ろに,
を入れると。
knife node run_list add vm-name 'role[test_role001],'
vm-name:
run_list: role[test_role001]
knife node run_list remove vm-name 'role[test_role001],'
こうするとうまくいきました。。。。。。
わけのわからん仕様というかバグ(?)です。macで作業している方にはまったく関係ないかも。
4.レシピ実行
knife zero converge 'name:vm-name ' -a knife_zero.host
knife_zero.host
にはlocalに立てたvagrantVMへのssh接続情報をあらかじめセットしてあるものを使います。たぶんググればたくさん出てくるのでここでは割愛します。