OpscodeのSaaSを使用したChef環境の構築



Chef Clientの設定とOpscodeのSaaSを使用したChef Serverの使い方について。

cookbooksはgithub使用して管理します。
簡単な流れは以下の様な感じ。

  1. cookbookを用意する
  2. 必要があれば独自recipeを書いたりする
  3. cookbookをchefサーバ(今回はopscodeを利用)にアップする
  4. git(今回はgithubを利用)にフォークしてコミットしてベネフィット

– Chef Server の用意

Opscode – http://www.opscode.com/hosted-chef/
FreeTrialで登録する。 (5nodeまで使える様子)

Organizationsにて Regenerate validation key, Generate knife config 等を押してダウンロード。
UserProfileで自分を選択して get private key でkey作成してダウンロード。
(今回、保存先は~/Desktop)

– ChefをClientへインストールする

$ sudo apt-get install ruby-dev libopenssl-ruby rdoc ri irb build-essential
$ sudo apt-get install wget ssl-cert git-core libxslt1-dev
$ sudo gem install rubygems
$ source .bash_profile
$ sudo gem install chef

ここまで環境のインストールは完了。

– Clientの環境設定

githubから環境を持ってくる。ダウンロードしたファイルを 設置。

$ git clone git://github.com/opscode/chef-repo.git
$ mkdir ~/chef-repo/.chef
$ cp ~/Desktop/sw-validator.pem ~/chef-repo/.chef/
$ cp ~/Desktop/r00t_z3r0.pem ~/chef-repo/.chef/
$ cp ~/Desktop/knife.rb ~/chef-repo/.chef/

– Opscode(chef server)との接続確認

接続テストします。

$ knife client list
vmas-validator

– cookbookの準備

OpscodeのCookbookを持ってくる。

$ cd ~/chef-repo
$ rm -rf cookbooks
$ git clone git://github.com/opscode/cookbooks

– cookbookのアップロード

$ knife cookbook upload -a -o ~/chef-repo/cookbooks


Uploading zlib [1.0.0]
Uploading zsh [0.7.1]
upload complete

途中で以下の様なエラーが出たら修正する。

Uploading selinux [0.5.0]
FATAL: Cookbook file recipes/permissive.rb has a ruby syntax error:
FATAL: ~/chef-repo/cookbooks/selinux/recipes/permissive.rb:34: syntax error, unexpected ‘)’ 

– アップロードされたcookbookの削除

$ knife cookbook delete base_packages

ちなみにアップロードされたcookbooksはここ(opscode)で確認できる。

– githubの用意

githubでアカウント登録してリポジトリを制作する。
今回はchef用のリポジトリなんで”chef-cookbook”という名称で作成。

– git各種設定

git configを使用して設定する。

$ git config –global user.name “T___oshi O__ke”
$ git config –global user.email r__t_z3r0@v_astur__tion.com

次に,ssh-keygenを実行してid_rsa.pubを生成して中身をAdd another publicへ追加する。
今度はフォークする準備とかします。

$ cd ~/chef-repo/cookbooks
$ git branch
* master
$ git branch masturbation
$ git branch
* master
masturbation
$ git checkout masturbation
M djbdns/recipes/axfr.rb
M gnu_parallel/metadata.rb
M selinux/recipes/disabled.rb
M selinux/recipes/enforcing.rb
M selinux/recipes/permissive.rb
Switched to branch ‘masturbation’

masterはdefaultなブランチなので現在を起点に新しいbaranchを作ります。
checkoutでbranchを変更しました。

$ git remote add penis git@github.com:r__t-z3r0/chef-cookbook.git
$ git  push -u penis masturbation

Counting objects: 15149, done.
Compressing objects: 100% (4684/4684), done.
Writing objects: 100% (15149/15149), 6.46 MiB | 46 KiB/s, done.
Total 15149 (delta 8829), reused 15148 (delta 8829)
To git@github.com:r00t-z3r0/chef-cookbook.git
* [new branch] masturbation -> masturbation
Branch masturbation set up to track remote branch masturbation from penis.

完了後はgithub上のrepositoryにちゃんと追加されているか確認します。

– 話戻るけど、chef-clientを実行してみる

実行する前にknifeを使用してclient用のファイルを生成する必要があります。

$ cd ~/chef-repo
$ knife configure client ./client- config

$ ls -l client-config
$ sudo mkdir /etc/chef
$ cp -r ~/chef-repo/client-config/* /etc/chef

$ chef-client

特にrun listやroleの設定等も行なって無いので、何も起きません。
opscodeのここでnodeに対して 設定すれば完了です。 (zshあたりで試して)

chef-client実行出来る環境とclient-configだけで超高速Deployできちゃいます。
最後になりますが結構色んなサイト参考にしました。

以上

About r00t_z3r0
最小で最大を

Leave a comment