Program LOG

勉強した内容をまとめ中。。。間違ってたら教えて。。。

windows+CygwinでChef - 2.基本的な操作とapacheのインストール

前回は、Chefの概要をつかむって事と、
chefのインストール、knife-soloのインストールを行い、hello worldを表示するって所まで行いました。
今回はちゃんとレシピを作って、実際にインストールしていきたいと思います。

Windos+Chef入門目次を作成しました!
windows+CygwinでChef - 目次 - Program LOG

Cookbook作成のおさらい

さて、前回はhello worldの表示をするだけのcookbookを作成して、レシピも書きました。
今回はより実践的な環境を用意していきたいと思います。
その為、再度新しく、cookbookを作成したいと思います。
前回作成した「lessons」Chefレポジトリのディレクトリに移動して、以下のように実行すれば
cookbookは作成されます。

$ knife cookbook create develop -o site-cookbooks/

それでは、作成されたdevelopクックブックにサーバーの設定を書いていきたいと思います。

リソースについて

Chefの基本的な記述方法で、リソースという概念があります。

Chefでは、ITインフラストラクチャー環境の各パーツがどんな風に作られてほしいのかを"レシピ(recipe)"と呼ばれるRubyのコードで定義します。各パーツのあるべき状態は、後述の"リソース(Resources)"を定義するという形でレシピに書いていきます。

基本的な構文として、リソースは、「実行条件」、「アクション」、「通知」、「オプション(属性)」の4つを使って定義します

{リソースタイプ} "{リソース名}" do
 # 実行条件
 {only_if | not_if} { {条件文} }

 # 通知
 {notifies|subscribes} {アクション}, "{リソースタイプ[リソース名]}",{:immediately|:delayed}
 :
 # オプション(属性)
 {オプション名} {オプション値}
 :
 # アクション
 action {アクション}
end

様々なリソースタイプがあります。興味のある方は下記URLを参照してみるといいかと思います!
Resources and Providers Reference — Chef Single-page Topics
また、リソースについて、Naverまとめにものすごい分かりやすいのがありましたので、
リソースについてもっと知りたい場合は、下記URLを参照してみてください。
[Chef] レシピを書く上で一番重要な「リソース」について #OpsChef_ja - NAVER まとめ

Vimをインストールしてみる。

アプリケーションをインストールするには、「package」リソースを使用します。
早速「develop/recipes/default.rb」に書いていきます。

package "vim-enhanced" do
	action :install
end

次に、「Node」の設定も必要です。
前回の記事で作成した仮想サーバーを使用しますので、
「nodes/chefssh.json」を修正していきます。

{
  "run_list":[
     "recipe[develop]"
  ]
}

そして、Cygwinでcookコマンドを実行すれば実行されます。

$ knife solo cook chefssh
Running Chef on chefssh...
Checking Chef version...
・・・中略・・・
Recipe: develop::default
  * package[vim-enhanced] action install
    - install version 7.2.411-1.8.el6 of package vim-enhanced

Running handlers:
Running handlers complete

Chef Client finished, 1/1 resources updated in 39.694298546 seconds

インストールが完了しました。
仮想サーバーで確認し、Vimコマンドが実行できるようになっていました。
インストールが完了した後に、再度cookすると以下のようになります。

$ knife solo cook chefssh
Running Chef on chefssh...
Checking Chef version...
・・・中略・・・
Recipe: develop::default
  * package[vim-enhanced] action install (up to date)

既にインストール済みだよって教えてくれ、スキップしてくれます。

apacheのインストールと起動、常時起動

次に、WEBサーバーをインストールして、apacheを起動し、常時起動する設定をしていきたいと思います。
また、iptablesのstopや常時起動を切っておきたいと思います。

まず、レシピから書いていきます。

#iptablesの設定
service "iptables" do
  action [:stop, :disable]
end

#apacheのインストール
package "httpd" do
  action :install
end

#apacheのservice設定
service "httpd" do
  supports :status => true, :restart => true
  action [ :enable, :restart ]
end

新しくserviceというリソースを使用しています。
これは、「service httpd restart」と行いたい場合に使用します。
また、配列にして「:enable」や「:disable」と書いてありますが、これは常時起動用のオプションなので、
「chkconfig httpd on(off)」も一緒にやってくれます。

先ほど、Nodeの設定はしてありますので、今回は省略して、cookコマンドを実行します。

$ knife solo cook chefssh
Running Chef on chefssh...
・・・・中略・・・・
  * package[vim-enhanced] action install (up to date)
  * service[iptables] action stop
    - stop service service[iptables]
  * service[iptables] action disable
    - disable service service[iptables]
  * package[httpd] action install
    - install version 2.2.15-30.el6.centos of package httpd
  * service[httpd] action enable
    - enable service service[httpd]
  * service[httpd] action restart
    - restart service service[httpd]
Running handlers:
Running handlers complete

Chef Client finished, 4/6 resources updated in 24.232949899 seconds

インストールとサービスの設定が完了しました。
仮想サーバーへログインして、状態を確認しておきます。

[vagrant@localhost ~]$ sudo service iptables status
iptables: Firewall is not running.
[vagrant@localhost ~]$ chkconfig --list | grep "iptables"
iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off
[vagrant@localhost ~]$ sudo service httpd status
httpd (pid  4620) is running...
[vagrant@localhost ~]$ chkconfig --list | grep "httpd"
httpd           0:off   1:off   2:on    3:on    4:on    5:on    6:off

正常に起動が出来ている事が確認出来ました。
このように、リソースを使用して、どんどんレシピを作成していく事になります。

次回は、ちょっと前に書いたLAMP環境最短構築と同じ状況にしたいと思うので、
phpのインストール。php.iniの設定、mysqlのインストール、my.cnfの設定などを
書いていこうと思います。

使用環境