Chef-Soloを使ってApacheをインストールする
1.はじめに
前回の記事でChefに興味のある方を対象といいつつ、Vagrant+VirtualBoxによる
仮想環境の構築で終わってしまいましたので今回こそはChefについて触れてみたいと思います。
- 本稿の範囲:仮想環境上にChef SoloによるApacheインストール
- 対象読者:Chefに興味があるものの未だ使用経験の無い方
- 検証環境:OS X Meverics
今回はVagrant+VirtualBoxで構築した仮想環境を使います。
"Vagrant+VirtualBoxによる仮想環境構築"については前回の記事を参照のこと。
2. Chefとは
Chefとは、記述されたコードに基づきITインフラの自動構築を行なうプラットホームです。
(似たものでは"Puppet"というのも存在しますが、こちらは未検証。)
構築するITインフラの状態は"レシピ"と呼ばれるファイルにRubyの文法で記述します。
本稿ではChef Soloを使用しますが、これはChefServerとのやりとりを必要とせずに
ITインフラの構築を行なうツールです。
2.1. Chefを使って幸せになる
Chefはいかにして我々を幸せにしてくれるのでしょうか。
例えば、あなたがアプリケーションエンジニアだったとして何か面白いサービスを思いついたとします。
その時に、ゼロからITインフラの構築をするのは非常に面倒くさいものです。
(Apacheをインストールして、PHPをインストールして、MySQLをインストールして etc..)
こういったITインフラの構築作業はChefに任せてしまえばいくつかのコマンドを実行するだけで自動に、
そして、速やかに作業を終えてくれ、エンジニアは本来やるべき作業に速やかに着手することができます。
いやはや、素晴らしい!
それでは、実際にChef Soloを使ってのApacheのインストールを行なっていきます。
3. 仮想環境を作る
ターミナルを開いていただき適当な環境を作ります。
$ mkdir HelloChefSolo
$ cd HelloChefSolo/
3.1. 初期化
適当なboxを追加します。今回は、CentOS 6.5のboxを追加します。
boxを追加したらvagrant init
と入力しVagrantfileを作ります。
$ vagrant box add github-centos-6.5 https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
==> box: Adding box 'github-centos-6.5' (v0) for provider:
box: Downloading: https://github.com/2creatives/vagrant-centos/releases/download/v6.5.3/centos65-x86_64-20140116.box
==> box: Successfully added box 'github-centos-6.5' (v0) for 'virtualbox'!
$ vagrant init
A `Vagrantfile` has been placed in this directory. You are now
ready to `vagrant up` your first virtual environment! Please read
the comments in the Vagrantfile as well as documentation on
`vagrantup.com` for more information on using Vagrant.
3.2. Vagrantfileの編集
vagrant init
で作られたVagrantfileを以下のように編集します。
(コメントは省略しています。)
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "github-centos-6.5" <--- addしたboxの名称
config.vm.network "private_network", ip: "192.168.33.10" <--- ゲストマシンのIPアドレス
end
3.3. ゲストマシン起動
vagrant up
と入力し起動します。
$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'github-centos-6.5'...
==> default: Matching MAC address for NAT networking...
==> default: Setting the name of the VM: HelloChefSolo_default_1402230557250_8293
==> default: Clearing any previously set network interfaces...
==> default: Preparing network interfaces based on configuration...
default: Adapter 1: nat
default: Adapter 2: hostonly
==> default: Forwarding ports...
default: 22 => 2222 (adapter 1)
==> default: Booting VM...
==> default: Waiting for machine to boot. This may take a few minutes...
default: SSH address: 127.0.0.1:2222
default: SSH username: vagrant
default: SSH auth method: private key
default: Warning: Remote connection disconnect. Retrying...
==> default: Machine booted and ready!
==> default: Checking for guest additions in VM...
==> default: Configuring and enabling network interfaces...
==> default: Mounting shared folders...
default: /vagrant => /Users/nakagawadaisuke/HelloChefSolo
無事に起動しました。
起動したら、vagrant ssh
でゲストマシンに接続します。
$ vagrant ssh
[vagrant@vagrant-centos65 ~]$
以降は、ゲストマシン上での操作になります。
4. Chef Soloのインストール
Chefのインストーラを取得して実行します。
Chef本体をインストールすることでChef Soloも入ります。
$ curl -L https://www.opscode.com/chef/install.sh | sudo bash
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 15934 100 15934 0 0 2473 0 0:00:06 0:00:06 --:--:-- 31181
Downloading Chef for el...
downloading https://www.opscode.com/chef/metadata?v=&prerelease=false&nightlies=false&p=el&pv=6&m=x86_64
to file /tmp/install.sh.2045/metadata.txt
trying curl...
url https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.12.8-1.el6.x86_64.rpm
md5 f5b6fd9c72f64fb8e11685e6fbffe189
sha256 0d3bba21a4abe19adb08993ce0b8bc24107b89c159edb15d8f82cfd8867ab3cc
downloaded metadata file looks valid...
downloading https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-11.12.8-1.el6.x86_64.rpm
to file /tmp/install.sh.2045/chef-11.12.8-1.el6.x86_64.rpm
trying curl...
Comparing checksum with sha256sum...
Installing Chef
installing with rpm...
warning: /tmp/install.sh.2045/chef-11.12.8-1.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID 83ef826a: NOKEY
Preparing... ########################################### [100%]
1:chef ########################################### [100%]
Thank you for installing Chef!
成功しました。
chef-solo -v
でバージョン情報が取得できるか確認してみましょう。
[vagrant@vagrant-centos65 ~]$ chef-solo -v
Chef: 11.12.8
5.クックブック、レシピの作成
5.1. クックブックの作成
クックブックを作成するにはknie cookbook create
コマンドを使用します。
特に場所を指定しないとリポジトリディレクトリ(/var/chef)にクックブックを作成します。
コマンドの構文はこのようになっています。
knife cookbook create {COOKBOOK_NAME} {option}
クックブックの出力先を指定する場合にはオプションに-o {PATH}
もしくは--cookbook-path {PATH}
とします。
とりあえずデフォルトのリポジトリディレクトリにクックブックを作ります。
[vagrant@vagrant-centos65 ~]$ sudo mkdir /var/chef
[vagrant@vagrant-centos65 bin]$ sudo knife cookbook create apache
WARNING: No knife configuration file found
** Creating cookbook apache
** Creating README for cookbook: apache
** Creating CHANGELOG for cookbook: apache
** Creating metadata for cookbook: apache
/var/chef/cookbooks
に"apache"ディレクトリが作られました。
中身はこのようになっています。
[vagrant@vagrant-centos65 apache]$ ll /var/chef/cookbooks/apache/
total 44
-rw-r--r-- 1 root root 451 Jun 8 13:21 CHANGELOG.md
-rw-r--r-- 1 root root 1448 Jun 8 13:21 README.md
drwxr-xr-x 2 root root 4096 Jun 8 13:21 attributes
drwxr-xr-x 2 root root 4096 Jun 8 13:21 definitions
drwxr-xr-x 3 root root 4096 Jun 8 13:21 files
drwxr-xr-x 2 root root 4096 Jun 8 13:21 libraries
-rw-r--r-- 1 root root 276 Jun 8 13:21 metadata.rb
drwxr-xr-x 2 root root 4096 Jun 8 13:21 providers
drwxr-xr-x 2 root root 4096 Jun 8 13:21 recipes
drwxr-xr-x 2 root root 4096 Jun 8 13:21 resources
drwxr-xr-x 3 root root 4096 Jun 8 13:21 templates
レシピは、recipesディレクトリの中に入っています。
5.2. レシピの編集
クックブックを作成した際に作られた"recipes"ディレクトリへ移動しましょう。
[vagrant@vagrant-centos65 apache]$ cd /var/chef/cookbooks/apache/recipes/
[vagrant@vagrant-centos65 recipes]$ ll
total 4
-rw-r--r-- 1 root root 132 Jun 8 13:21 default.rb
default.rb
というファイル(レシピ)があります。
これを以下のように編集します。
#
# Cookbook Name:: apache
# Recipe:: default
#
# Copyright 2014, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
package "httpd" do
action :install
end
service "httpd" do
action [ :enable, :start ]
end
ざっくり二つの部分から構成されています。
まず最初に出てくるのがこの部分です。
ほとんど読んだままですが、ここで"httpd"パッケージをinstallしています。
package "httpd" do
action :install
end
次に二つ目の部分です。
ここで"httpd"に対して"有効"かつ”開始"にしています。
service "httpd" do
action [ :enable, :start ]
end
非常にシンプルなレシピですが、これで何ができるのか。実際に動かしてみましょう。
6. Chef Solo実行
chef-solo
コマンドで実行します。
-o
オプションで作成したクックブックを指定します。
[vagrant@vagrant-centos65 recipes]$ sudo chef-solo -o apache
[2014-06-08T13:51:54+00:00] WARN: *****************************************
[2014-06-08T13:51:54+00:00] WARN: Did not find config file: /etc/chef/solo.rb, using command line options.
[2014-06-08T13:51:54+00:00] WARN: *****************************************
[2014-06-08T13:51:54+00:00] WARN:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
SSL validation of HTTPS requests is disabled. HTTPS connections are still
encrypted, but chef is not able to detect forged replies or man in the middle
attacks.
To fix this issue add an entry like this to your configuration file:
\```
# Verify all HTTPS connections (recommended)
ssl_verify_mode :verify_peer
# OR, Verify only connections to chef-server
verify_api_cert true
\```
To check your SSL configuration, or troubleshoot errors, you can use the
\`knife ssl check` command like so:
\```
knife ssl check -c /etc/chef/solo.rb
\```
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Starting Chef Client, version 11.12.8
[2014-06-08T13:52:02+00:00] WARN: Run List override has been provided.
[2014-06-08T13:52:02+00:00] WARN: Original Run List: []
[2014-06-08T13:52:02+00:00] WARN: Overridden Run List: [recipe[apache]]
Compiling Cookbooks...
Converging 2 resources
Recipe: apache::default
* 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 start
- start service service[httpd]
Running handlers:
Running handlers complete
Chef Client finished, 3/3 resources updated in 387.471681083 seconds
いくつかのWARNが出たものの、無事にインストールから、有効、起動まで終了したようです。
では、実際にWEBブラウザから確認してみましょう。
7. WEBブラウザから確認
WEBブラウザからApacheへアクセスできるか確認します。
Vagrantfileで編集したIPアドレス(192.168.33.10)にアクセスします。
http://192.168.33.10/
です。
以下のようにApacheが応答を返してくれました。
8. 後片付け
動作確認まで終わりましたのでゲストマシンを停止します。お疲れさまでした。
[vagrant@vagrant-centos65 recipes]$ exit
logout
Connection to 127.0.0.1 closed.
$ vagrant halt
==> default: Attempting graceful shutdown of VM...
9. まとめ
かなりの駆け足でしたがChef Soloのインストールからクックブックの作成、レシピの作成、Chef Solo実行と進んできました。
リポジトリはクックブックを包含しクックブックはレシピを包含する、リポジトリ>クックブック>レシピ
という構成が何となく把握していただければ幸いです。
10. 次回予告
本稿では、プロビジョニングの対象となるサーバーに直接ログインして作業を行いましたが、これでは少し面倒なような?
というわけで、次回は"knife solo"というツールを使用して作業端末からプロビジョニング対象のサーバーに対し、Chef Soloの実行をリモートに行なう方法について書いてみたいと思います。
Author And Source
この問題について(Chef-Soloを使ってApacheをインストールする), 我々は、より多くの情報をここで見つけました https://qiita.com/_daisuke0802/items/14788e55eacbee49e93e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .