ここまで準備すると、WindowsでもドットインストールさんのChef入門を試すことができます。
こちらで、基本動作を確認すると良いでしょう。
Chef入門 (全14回) – プログラミングならドットインストール
では、続きをやっていきます。
さくらVPSを想定した仮想環境を作成しよう
ここで、さくらVPSを契約しても良いですが、できるだけローカル環境で行う方が、セキュリティ的に良いので、Vagrantを使っていきます。
ホームディレクトリにvagrantdirディレクトリを作成して、さらにその中にsakuravpsディレクトリを作ります。
ディレクトリの場所や名前はお好みで良いですが、この記事ではそれで説明していきます。
$ cd $ mkdir vagrantdir $ cd vagrantdir $ mkdir sakuravps $ cd sakuravps
Boxを探して入れよう
現在、さくらVPSのデフォルトのOSはCentOS 6 x86_64なので、それに合わせることにします。
さくらVPSでは、OSを変更することができるので、入れたいOSがあれば、それに合わせても良いでしょう。
下記のサイトからVagrantのBoxを探します。
Discover Featured Vagrant Boxes
私は、一番文字列が近いdriebit/centos-6-x86_64を選びました。
Boxの起動と初期設定
こちらで、仮想環境を構築していきます。
$ vagrant box add driebit/centos-6-x86_64 $ vagrant init driebit/centos-6-x86_64
initをすると、そのディレクトリにVagrantfileができます。
起動する前に、アクセスできるようにアドレスを設定しておきましょう。
viなどのコマンドで編集すれば良いのですが、Windowsでフォルダを開いて作業するのも良いでしょう。
$ explorer .
Vagrantfileを開くと、以下の部分がコメントアウトされているので、外しましょう。
~/vagrantdir/sakuravps/Vagrantfile
config.vm.network "private_network", ip: "192.168.33.10"
それは、Vagrantを起動します。
$ vagrant up
ChefやSSHコマンドを使う場合、下記のようにすると便利です。
やっておきましょう。
$ vagrant ssh-config --host sakuravps >> ~/.ssh/config
これで、擬似さくらVPSが完成しました。
Chefを動かす
それでは、Chefを動かしていきましょう。
リポジトリの作成
まず、リポジトリを作成します。
名前は、chef-repoとしました。
$ knife solo init chef-repo
そうすると、こんな感じになります。
$ cd chef-repo $ ls -la drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 .chef -rw-r--r-- 1 morisan None 12 0月 00 00:00 .gitignore -rw-r--r-- 1 morisan None 14 0月 00 00:00 Berksfile drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 cookbooks drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 data_bags drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 environments drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 nodes drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 roles drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 site-cookbooks
ざっと説明すると以下のようになります。
.chef | 内部のknife.rbで、レポジトリ内のパスを管理 |
---|---|
.gitignore | Gitで管理しないファイルなどの管理 |
Berksfile | Berkshelfで依存を管理 |
cookbooks | サードパーティCookbookを入れる |
data_bags | Cookbookをまたいだデータを入れる |
environments | 開発/ステージング/本番などと分ける場合に使う |
nodes | Chefで反映させるマシン(ノードと呼びます)単位で管理する設定ファイルを入れる |
roles | WEBサーバー/DBサーバーなど、役割で設定を分けるファイルを入れる |
site-cookbooks | 自分たちのCookbookを入れる |
ノードの設定
次にノードを設定します。
実行すると、nodesディレクトリにsakuravps.jsonが作成され、sakuravpsマシンにChef Soloがインストールされます。
$ knife solo prepare sakuravps
ためしにrecipeを書いてみる
本格的にrecipeを書く前に、作業の流れを確かめましょう。
Cookbookの作成
testbookというCookbookを作ります。
$ knife cookbook create testbook -o site-cookbooks $ cd site-cookbooks/testbook $ ls -la drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 attributes -rw-r--r-- 1 morisan None 459 0月 00 00:00 CHANGELOG.md drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 definitions drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 files drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 libraries -rw-r--r-- 1 morisan None 280 0月 00 00:00 metadata.rb drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 providers -rw-r--r-- 1 morisan None 1464 0月 00 00:00 README.md drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 recipes drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 resources drwxr-xr-x+ 1 morisan None 0 0月 00 00:00 templates
Cookbookを作成すると、このような構成になります。
ざっと説明すると、以下のようになります。
attributes | recipeでは、変更がありそうな箇所を変数にしておきますが、そのdefaultの値を設定します |
---|---|
CHANGELOG.md | Cookbookの変更の履歴(主にCookbookを公開する場合に使用) |
definitions | リソースを拡張する時に使用するようです |
files | リリースした静的ファイルを入れます |
libraries | 共通化したいRubyのコードを入れます |
metadata.rb | Cookbookのメタ情報を記載します(主にCookbookを公開する場合に使用) |
providers | LWRPsで使用※1 |
README.md | 使い方を記載します(主にCookbookを公開する場合に使用) |
recipes | recipeを入れます |
resources | LWRPsで使用※1 |
templates | 動的ファイルを入れます |
今回は、強調したセル要素を使用しています。
実際にrecipeを記述
それでは、recipes/default.rbを開いて、WEBサーバー(Apache)をインストールするrecipeを書いてみます。
~/vagrantdir/sakuravps/chef-repo/site-cookbooks/testbook/default.rb
package "httpd" do action :install end
次にrecipeをnodeに登録します。
~/vagrantdir/sakuravps/chef-repo/nodes/sakuravps.rb
{ "run_list": [ "recipe[testbook]" ], "automatic": { "ipaddress": "sakuravps" } }
実行とエラー
それでは実行してみましょう。
cd ~/vagrantdir/sakuravps/chef-repo $ knife solo cook sakuravps
実は、Cygwinではエラーになってしまいます。
ERROR: Net::SSH::Disconnect: connection closed by remote host
参考サイト通りに行うと解決できます。
Cygwinのknife solo cookがconnection closed by remote hostでコケル件
この設定が終わったら、気を取り直して、実行します。
このような感じになれば、インストール完了です。
$ knife solo cook sakuravps Running Chef on sakuravps... Checking Chef version... (略) Starting Chef Client, version 11.12.8 Compiling Cookbooks... Converging 1 resources Recipe: testbook::default * package[httpd] action install - install version 2.2.15-31.el6.centos of package httpd Running handlers: Running handlers complete Chef Client finished, 1/1 resources updated in 22.003023864 seconds
仮想環境にログイン
これだけでは192.168.33.10にアクセスしても、何も表示されません。
Apacheが起動していないからです。
(実際は、この辺りもChefで対応できます)
仮想環境にログインしましょう。
$ ssh sakuravps
次にApacheを起動します。
[vagrant@localhost ~]$ sudo service httpd start
設定したアドレスにアクセスすると、Apacheの画面が表示されるはずです。
初期化する
一通り、動作が確認できたら初期化しましょう。
自分の望んだ環境を構築するまでに、何度もインストールし、初期化することになると思います。
仮想環境から出ます。
$ exit
コマンドを入れると、仮想環境は、初期化されます。
$ vagrant destroy -f
次回は、さくらVPSに合わせた設定をrecipeを書いていきます!
コメント