どうもこんばんわ。Adachinです。
世の中はサーバ自動化が流行っております。
自動化すればサーバの設定とか、
インフラエンジニアのやることが少なくなる!w
さらにリスクが減る!
というわけで、今回はVagrantでローカルChef-Serverを使っていきたいと思います。
ローカルがちゃんと動けば本番もOKです。
■用意するもの
・Mac(マーライオン以上)
・VirtualBox
・Vagrant(1.3.5)
・Chef-Server(11)
■構成
今回はこんな感じでやりました。
とりあえずnodeに自動LAMP化していくのが目的です。
本来は・・・
1 2 3 |
Chef Server:Clientの管理を行う Chef Node:Chefによって構築、管理される対象 Chef Workstation:構築、管理する方法をコーティングしたCookbookの作成、更新を行う端末 |
■CentOS6のイメージを用意
Vagrant自体、使い方分からない人はこちらを参考!
1 |
# vagrant box add centos6 http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.3-x86_64-v20130101.box |
1 2 |
# vagrant box list centos6 (virtualbox) |
■Vagrantfileを用意する
GitHubにVagrantfileをあげましたので下記参考。
1 2 |
192.168.33.12がchef-sever 192.168.33.13がnode |
■Vagrantを立ち上げる
1 |
# vagrant up chef_server |
1 |
# vagrant up my_node |
1 2 3 4 5 |
# vagrant status Current machine states: chef_server running (virtualbox) my_node running (virtualbox) |
■Macのhostsファイルに追記(sudo vim /etc/hosts)
1 |
192.168.33.12 chef-server |
■Chef-Server導入
chef server10はインストールが若干面倒だったが、
chef server11からはrpmが用意されていて簡単にインストールすることが可能!
ちなみに今はchef-server12が最新。
・chef_serverにログイン
1 |
# vagrant ssh chef_server |
・wgetでrpmをダウンロード(11.1.5)
1 |
# wget https://web-dl.packagecloud.io/chef/stable/packages/el/5/chef-server-11.1.5-1.el5.x86_64.rpm |
rpm -ivh chef-server-11.1.5-1.el5.x86_64.rpm
・chef-server起動
1 |
# chef-server-ctl reconfigure |
・iptables停止
1 2 |
# /etc/init.d/iptables stop # chkconfig iptables off |
■ブラウザからChef-Server確認
基本https(443)なのでアクセス同時にSSLエラーが出ますが無視。
ログイン情報は右側に書いてあります。
ログインすると公開鍵が出てくるのでコピーしましょう。
■ Chef-Serverにknifeコマンドを導入
以下のように入力。
1 2 3 4 5 6 7 8 |
# knife configure WARNING: No knife configuration file found Where should I put the config file? [/root/.chef/knife.rb] Please enter the chef server URL: [http://chef-server:4000] https://localhost Please enter an existing username or clientname for the API: [vagrant] admin Please enter the validation clientname: [chef-validator] Please enter the location of the validation key: [/etc/chef/validation.pem] Please enter the path to a chef repository (or leave blank): |
・knifeコマンドの認証用の鍵を設置
1 2 3 |
# mkdir -p /etc/chef/ # sudo cp -i /etc/chef-server/admin.pem /root/.chef/admin.pem # cp -i /etc/chef-server/chef-validator.pem /etc/chef/validation.pem |
1 2 3 4 |
# knife client list chef-validator chef-webui →これがあればOK |
■nodeを登録
登録する際はnode側からコマンドを実行する必要があるので、
pemをコピーします。
1 2 3 4 5 6 7 8 |
# cat /etc/chef-server/chef-validator.pem -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAq5l/tHNBnDneLIz2eHsq1S4gKdKD3m8Id7zG0vZtKCi8orkK rk1Ut3tDMNU/+jSQIVOC7eH2uv+fclggkpu42/GoQ35lhfjRxNDz+ToqAMJZwgUu UU282VKRFmn8c0dxRluBbYPHyIlvUMetz13if5osbSMeniXuOB2VTnyih4XnCC4u cIw6L74j5VHG3Zrydj5QaMqv0ZcxMlcz4aP9X0HLNDku5KPppeHtZ2ITHbHMTzGS 〜省略〜 -----END RSA PRIVATE KEY----- |
・node側からchef-serverへ登録する
1 2 3 |
# vagrant ssh node # vim /etc/hosts 192.168.33.12 chef-server |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# curl -L https://www.getchef.com/chef/install.sh | sudo bash -s - -v 11.4.4 ※chef-severと近いバージョンにしないと☓ # mkdir -p /etc/chef # /opt/chef/bin/knife configure client -s https://chef-server /etc/chef # vim /etc/chef/validation.pem →さっきのpemを貼り付け -----BEGIN RSA PRIVATE KEY----- MIIEpAIBAAKCAQEAq5l/tHNBnDneLIz2eHsq1S4gKdKD3m8Id7zG0vZtKCi8orkK rk1Ut3tDMNU/+jSQIVOC7eH2uv+fclggkpu42/GoQ35lhfjRxNDz+ToqAMJZwgUu UU282VKRFmn8c0dxRluBbYPHyIlvUMetz13if5osbSMeniXuOB2VTnyih4XnCC4u cIw6L74j5VHG3Zrydj5QaMqv0ZcxMlcz4aP9X0HLNDku5KPppeHtZ2ITHbHMTzGS 〜省略〜 -----END RSA PRIVATE KEY----- |
1 2 |
# chef-client →起動。これで登録されました。 |
■cookbookをchef serverに登録する
とりあえずこれで環境はできたので料理本でも作りましょ。
今回はLAMP環境を自動でインストールしてくれるレシピを書きました。
・chef-serverにて
1 |
# knife cookbook create LAMP |
1 |
# vim /var/chef/cookbooks/LAMP/recipes/default.rb |
・レシピ内容はGitHubにて
https://github.com/RVIRUS0817/adachin_git/blob/master/chef_cookbook/LAMP.rb
・編集できたらアップロード
1 |
# knife cookbook upload vim |
・どのnodeに追加するのか指定
1 |
# knife node run_list add my-node LAMP |
■node側でcookbookを適用
・node側で実行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# chef-client Starting Chef Client, version 11.4.4 resolving cookbooks for run list: ["LAMP"] INFO: Loading cookbooks [LAMP] Synchronizing Cookbooks: [2015-02-16T07:25:42+00:00] INFO: Storing updated cookbooks/LAMP/recipes/default.rb in the cache. [2015-02-16T07:25:43+00:00] INFO: Storing updated cookbooks/LAMP/CHANGELOG.md in the cache. [2015-02-16T07:25:43+00:00] INFO: Storing updated cookbooks/LAMP/metadata.rb in the cache. [2015-02-16T07:25:43+00:00] INFO: Storing updated cookbooks/LAMP/README.md in the cache. - LAMP Compiling Cookbooks... Converging 1 resources Recipe: LAMP::default 〜省略〜 [2015-02-16T07:26:03+00:00] INFO: Chef Run complete in 20.959421756 seconds [2015-02-16T07:26:03+00:00] INFO: Running report handlers [2015-02-16T07:26:03+00:00] INFO: Report handlers complete Chef Client finished, 1 resources updated |
■まとめ
作るまでが大変・・・
環境によっては作り方がいろいろと違うのもあるので、
勉強しないとわからないということ。
そして学習コストがもっとも低いのはansibleだそうだ。
chef-zeloはどうなんでしょう・・・
参考資料:http://nanapi.co.jp/blog/2013/06/12/try-chef-server-using-vagrant/
http://www.idcf.jp/blog/cloud/chef-11/
0件のコメント