SlideShare una empresa de Scribd logo
1 de 15
~SoloのDeprecatedから半年~
@smallpalace
Chef-localmodeをためした
Who are you
》 10年ほど同じ会社でサバカンしている
》 夫(4x)1、娘(3)1
》 むだに手先が器用なゆるゲーマー
もくじ
》 事の経緯など
》 比較検討
》 インストール
》 Knife.rbを用意
》 Validation_keyを用意
》 Chef-Clientでローカル適用
》 Knife-zeroでリモート適用
》 並列実行
》 検索&適用
》 ハマったところなど
》 参考サイト
》 推奨図書
》 おわり
事の経緯など
》 開発元からChef-Soloをdeplicatedとい
う扱いにすると公表された
》 関わってる環境が継続前提かつ関係者
が技術的にとんがり系で移行の話題に
》 とりあえず調べるところからはじめた
比較検討
》 Ansible,Puppet,Fablic,,,
Chef-Repoの改修コストが大きすぎる。YAMLでレシピ書くのヤダ。
》 Itamae
Chef-Repoの改修コストは小さめだけどroleやenvironmentを
attributeに直すコストがムリ。Databags機能もない。
》 Chef-Server
改修コストは無いけどコミュニティ版はHA機能がないので見送り。
Chef-ZeroをインメモリChef-Serverとして使うのも停止でデータが消
えるので意味ない。
》 レシピ的にほぼ何の改修もなくてSoloよりknifeコマンドが使いこなせ
るChef-localmodeでいいだろうという話に。
》 わたしはchef沼にだいぶつかりこんでいたことが分かった。
インストール
》 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通しておかないと詰んだりなど
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
Validation_keyを用意
》 初回Node登録などに必要な鍵を作成
ssh-keygen -t rsa -N "" -f ~/chef-repo/.chef/dummy.pem
※この鍵のknife zeroでの指定方法は、どこで実行しようともChef-
Repoからの相対PATHな感じでした。絶対PATHにしたらエラー。
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
Knife-zeroでリモート適用
》 以下のように実施
newip=10.xxx.xxx.xxx
env=sandbox
dpas=`cat path_to_file`
user=hoge
url=https://www.opscode.com/chef/install.sh
$ knife zero bootstrap --node-name $newip ¥
--bootstrap-url $url -i .chef/dummy.pem -x $user -P $dpas ¥
-s $(cat ./path_to_databags-key) --sudo ¥
-E $env -r role¥[role-name¥] $newip
.knife.rbに以下を指定しておくと、-xと-Pを省略可能(平文になってしまうのでgitコミットしないよう注意。
------------------
knife[:ssh_user] = ""
knife[:ssh_password] = ""
------------------
検索&適用、並列実行
》 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
ハマったところなど
》 鍵関連
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実行時はないとエラー。
参考サイト
》 Chef-ZeroをインメモリChef-Serverとして使おうとしてるタイプ
http://dev.classmethod.jp/cloud/aws/amazon-linux-chef-zero/
http://clavier.hatenablog.com/entry/2013/11/26/222151
http://buta9999.hatenablog.jp/entry/2014/11/26/025708
http://inokara.hateblo.jp/entry/2013/05/26/151230
http://qiita.com/issei126/items/e5242453818f4419b745
http://www.creationline.com/lab/2749
http://qiita.com/kukita/items/932822b2d029e4b8a0c5
》 Chef-Zeroをlocalmodeで使おうとしてるタイプ
http://www.slideshare.net/mpgoetz/chefzero-local-mode
http://qiita.com/sawanoboly/items/218a7b03ddec6be45e34
http://www.atmarkit.co.jp/ait/articles/1503/24/news030.html
https://github.com/higanworks/chef_localmode_tutorial/blob/master/.chef/knife.rb
https://www.conoha.jp/blog/tech/4547.html
http://qiita.com/sawanoboly/items/a2cbd4c42525ae894371
http://qiita.com/LAmant/items/7d1ac7efec9041d067a6
http://www.creationline.com/lab/6380
http://buta9999.hatenablog.jp/entry/2014/11/26/025708
》 そのた
http://www.slideshare.net/yandod/devopschef-chef12
http://dev.classmethod.jp/server-side/chef-server-install/
https://twitter.com/search?f=realtime&q=%23GetChef_ja&src=typd
http://marcy.hatenablog.com/entry/2015/04/09/004605
http://qiita.com/Marcy/items/a314d81b78bb01a9626f
https://docs.chef.io/config_rb_knife.html
https://hiroakis.com/blog/2011/11/13/gnu-parallel/
推奨図書
》 「Chef活用ガイド」
おわり
》 ご覧いただきありがとうございました

Más contenido relacionado

Más de Yu Komiya (8)

Remotework
Remotework Remotework
Remotework
 
時短主婦の味方のご紹介
時短主婦の味方のご紹介時短主婦の味方のご紹介
時短主婦の味方のご紹介
 
MySQL5.6関連情報まとめ
MySQL5.6関連情報まとめMySQL5.6関連情報まとめ
MySQL5.6関連情報まとめ
 
Lvsをvpc上に構築してみた話
Lvsをvpc上に構築してみた話Lvsをvpc上に構築してみた話
Lvsをvpc上に構築してみた話
 
Chef社内向け解説とその課題について
Chef社内向け解説とその課題についてChef社内向け解説とその課題について
Chef社内向け解説とその課題について
 
My sqlのha構成について
My sqlのha構成についてMy sqlのha構成について
My sqlのha構成について
 
MHAを検証して導入した話
MHAを検証して導入した話MHAを検証して導入した話
MHAを検証して導入した話
 
Webサーバのチューニング
WebサーバのチューニングWebサーバのチューニング
Webサーバのチューニング
 

Último

Último (12)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native IntegrationsUtilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

Chef localmodeをためした