Más contenido relacionado
Chef localmodeをためした
- 2. Who are you
》 10年ほど同じ会社でサバカンしている
》 夫(4x)1、娘(3)1
》 むだに手先が器用なゆるゲーマー
- 3. もくじ
》 事の経緯など
》 比較検討
》 インストール
》 Knife.rbを用意
》 Validation_keyを用意
》 Chef-Clientでローカル適用
》 Knife-zeroでリモート適用
》 並列実行
》 検索&適用
》 ハマったところなど
》 参考サイト
》 推奨図書
》 おわり
- 6. インストール
》 Gemfileに以下を記載
》 bundle install
# bundle install
# bundle show
$ which chef-zero
$ knife zero –help
** ZERO COMMANDS **
knife zero bootstrap FQDN (options)
knife zero chef_client QUERY (options)
knife zero diagnose # show configuration from file
vi Gemfile
--------------------------
gem 'chef' #追加
gem 'chef-zero' #追加
gem 'knife-zero' #追加
--------------------------
chef-dkを入れる方法もあるが先に入れてPATH通しておかないと詰んだりなど
- 7. Knife.rbを用意
》 Chef-Repo/.chef/.knife.rbを用意
chef_repo = File.join(File.dirname(__FILE__), "..")
current_dir = File.dirname(__FILE__)
log_level :info
log_location STDOUT
#node_name `uname -n`
client_key "#{current_dir}/dummy.pem"
validation_client_name 'chef-validator'
validation_key "#{current_dir}/dummy.pem“
cookbook_path ["#{chef_repo}/cookbooks", "#{chef_repo}/site-cookbooks"]
node_path "#{chef_repo}/nodes"
role_path "#{chef_repo}/roles"
environment_path "#{chef_repo}/environments"
data_bag_path "#{chef_repo}/data_bags"
encrypted_data_bag_secret “path-to-databags-key"
knife[:berkshelf_path] = "#{chef_repo}/cookbooks"
#knife[:ssh_user] = ""
#knife[:ssh_password] = ""
knife[:ssh_port] = 22
knife[:editor] = "vim"
localmode true
chef_server_url 'http://127.0.0.1:8889'
syntax_check_cache_path "#{current_dir}/syntax_check_cache”
#puts Chef::Config.inspect
- 9. Chef-clientでローカル適用
》 client.rbを用意してchef-clientを実行$ mkdir /etc/chef; knife configure client –z
Creating client configuration
Writing client.rb
Writing validation.pem
$ vi /etc/chef/client.rb
------------------------------------------------------------------------
log_location STDOUT ## logの出力先
chef_server_url "http://localhost:8889" ## Chef-Server(Zero)のAPIエンドポイント
validation_client_name "chef-validator" ## Chef-Server(Zero)にNodeを登録するユーザ
validation_key "/etc/chef/validation.pem" ## Nodeを登録するユーザの秘密鍵
#node_name `uname -n` ## Node Objectの名前(default:FQDN)
client_fork true ## Chef-Clientの実行時にプロセスをフォークするか
client_key "/etc/chef/client.pem" ## Chef-Serverとの認証時に使用する秘密鍵のパス
client_registration_retries 5 ## Chef-ServerへNodeを新規登録するリトライ回数
cookbook_path ["#{chef_repo}/cookbooks", "#{chef_repo}/site-cookbooks"]
node_path "#{chef_repo}/nodes"
role_path "#{chef_repo}/roles"
environment_path "#{chef_repo}/environments"
data_bag_path "#{chef_repo}/data_bags"
encrypted_data_bag_secret “path-to-databags-key"
knife[:berkshelf_path] = "#{chef_repo}/cookbooks“
#puts Chef::Config.inspect
------------------------------------------------------------------------
$ sudo chef-client -z -r role¥[role-name¥] ¥
-E environement-name --validation_key /etc/chef/validation.pem
- 11. 検索&適用、並列実行
》 Knife sshとかで検索結果で実行
うまくいかなかった
》 Knife zero
うまくいかなかった
》 Pallarelコマンドをつかう
$ parallel -j 3 knife zero bootstrap -c ~/Chef-Repo/.chef/knife.rb -z -E $env -r role¥[role-name¥] ¥
-i .chef/dummy.pem -s $(cat ~/path_to_databag-key) --sudo --no-host-key-verify ::: $host1 $host2
- 12. ハマったところなど
》 鍵関連
ERROR: ArgumentErrorCould not parse PKey: no start line
ERROR: NoMethodErrorundefined method `forward' for nil:NilClass
ERROR: Net::SSH::Exceptionremote forwarding request failed
鍵指定は必ずChef-Repoからの相対パスじゃないとダメとかなんでだろう。
》 オプションとか
いっぱいありすぎて。。
》 実行場所
どこでもいいらしいけど-cで設定ファイルを明示など
》 node_nameとか
chef-client実行時は書いてあるとエラー、knife-zero実行時はないとエラー。