3回目となる今回でChefの紹介は最後です。クックブックの紹介とまとめを行います。
クックブックの紹介
LAMP環境の構築用クックブック
yum で Apache、PHP、MySQLのパッケージをインストールするだけの単純なレシピを作ります。
(いわゆるLAMP環境です。)
lampという名前のクックブックを作成します。
1 |
$ knife cookbook create lamp |
レシピを作成します。
(クックブック作成時に自動的に作成されるdefaultというレシピを使います。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
$ vi /home/chefuser01/cookbooks/lamp/recipes/default.rb # # Cookbook Name:: lamp # Recipe:: default # # Copyright 2014, YOUR_COMPANY_NAME # # All rights reserved - Do Not Redistribute # ## Apacheをインストールする # yum install -y httpd package "httpd" do action :install end # MySQLをインストールする # yum install -y mysql-server package "mysql-server" do action :install end # PHPと関連するモジュールをインストールする # yum install -y php # yum install -y php-mbstring # yum install -y php-mysql package "php" do action :install end package "php-mbstring" do action :install end package "php-mysql" do action :install end # Apacheの起動と自動起動の設定を行う # service httpd start # chkconfig on service "httpd" do action [:start, :enable] end # MySQLの起動と自動起動の設定を行う # service mysqld start # chkconfig mysqld on service 'mysqld' do action [:start, :enable] end # MySQLのセキュア設定を行う script "Secure_Install" do interpreter 'bash' user "root" code <<-EOL mysqladmin -u root password "your_password" mysql -u root -pyour_password -e "DELETE FROM mysql.user WHERE User='';" mysql -u root -pyour_password -e "DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1');" mysql -u root -pyour_password -e "DROP DATABASE test;" mysql -u root -pyour_password -e "DELETE FROM mysql.db WHERE Db='test' OR Db='test\\_%';" mysql -u root -pyour_password -e "FLUSH PRIVILEGES;" EOL end |
レシピの作成が終わりましたので、Chef-Soloを実行します
1 2 |
$ cd /home/user01 $ sudo chef-solo -c solo.rb -j node.json |
nmapコマンドで起動しているサービスを確認してみましょう。
1 2 3 4 5 6 7 8 9 10 11 |
$ nmap localhost Starting Nmap 5.51 ( http://nmap.org ) at 2014-10-29 14:46 JST Nmap scan report for localhost (127.0.0.1) Host is up (0.00040s latency). Other addresses for localhost (not scanned): 127.0.0.1 Not shown: 997 closed ports PORT STATE SERVICE 22/tcp open ssh 80/tcp open http 3306/tcp open mysql |
設定したパスワードでMySQLに接続が出来るか確認します
1 2 |
$ mysql -u root -p your_password |
以上でLANP環境のベース構築はできるはずです。
また、あらかじめ作成しておいた 各パッケージの設定ファイル httpd.conf 等を適用させることも可能です。
手順としては以下のようになります
1.httpd.conf.erb という名前の Templateを作成
2.httpd.conf.erb を元に /etc/httpd/conf/httpd.conf を作成
デフォルトの httpd.confを、/home/chefuser01/cookbooks/lamp/templates/httpd.conf.erb という名前でコピーします。
1 2 3 |
$ cp -a /etc/httpd/conf/httpd.conf /home/chefuser01/cookbooks/lamp/templates/default/httpd.conf.erb $ vi /home/chefuser01/cookbooks/lamp/templates/default/httpd.conf.erb |
次に、例えば httpd.conf.erb の Servername の部分を、以下のように書き換える。
1 |
ServerName <%= node['hostname'] %> |
default.rb に以下を追記。
1 2 3 4 5 6 7 8 9 10 11 |
$ vi /home/chefuser01/cookbooks/lamp/recipes/default.rb template "/etc/httpd/conf/httpd.conf" do source "httpd.conf.erb" group "root" owner "root" mode "0644" end service "httpd" do action [:restart,] end |
以上です。
まとめ
いかがでしたでしょうか?
最後に紹介した設定ファイルの適用ができるようになれば細かい設定ができるため、より実際のサーバ構築にも利用できるはずです。
今回は”Chef-Solo 構成”のみの紹介となりますが、まったく同じ構成のサーバを数十台規模で必要になるようなケースでなければ”Chef-Solo 構成”で十分ではないかと思います。
レシピの作成にはそれなりの時間が必要です。
そのため、同一環境のサーバが4、5台程度。というケースであれば、Chefは有効ではないと言えます。
しかし4、5台であってもそれが定期的に変更があるサーバであればどうでしょうか?
定期的に変更がある環境を全て同じに保ちたい。ということであれば例え4、5台であってもChefの利用が有効なケースと言えるでしょう。
————————————————————————————————
・レシピの調整に10分 + 各サーバへの適用(5台 x Chefの適用に5分) だとして合計 35分
・各サーバ毎の作業(5台 x 作業時間10分) だとして合計 50分
————————————————————————————————
こうしてみると十分効果はあるのが分かると思います。
また、Chefの利用には同一環境の構築という部分に目を奪われがちですが、クックブックはなるべく各環境で専用の物を用意するのではなく、できるだけ汎用的に作っておいて細かい調整は各サーバ毎に行う。という使い方もそれはそれで有効な使い方です。
まずは、難しく考えずにできるところからやってみることで、Chefの有効な使い道が見えてくるかもしれませんね。
それではまた。