LoginSignup
6
6

More than 5 years have passed since last update.

【#Chef】Linux 環境での Chef Solo(chef-solo)と Berkshelf 3 の基本的な使い方 #GetChef_ja

Last updated at Posted at 2014-06-26

Linux(RHEL系)環境での Chef Solo と Berkshelf の基本的な使い方について自分用のメモとしてまとめました。

AWS の EC2 インスタンス上に作成した Linux(RHEL6.5系)環境で Chef Solo と Berkshelf を使って Apache HTTP Server をインストールします。

1: iptables の無効化

AWS の セキュリティグループの機能で適切なセキュリティ設定が行われていることを前提に、 iptables を無効化します。

手順 1-1: iptables サービスを停止します

[bash]$ sudo service "iptables" stop
[bash]$ sudo service "iptables" status

iptables: Firewall is not running.

→ 上記のように表示されることを確かめます。

手順 1-2: iptables サービスの自動起動を無効化します

[bash]$ sudo chkconfig "iptables" off
[bash]$ chkconfig --list | grep "iptables"

iptables        0:off   1:off   2:off   3:off   4:off   5:off   6:off

→ 上記のように表示されることを確かめます。

2: Chef Development Kit (Chef-DK) のセットアップ

Chef と Berkshelf のインストール手順です。

Chef-DK をインストールすることで、Chef と Berkshelf をまとめてインストールします。

手順 2-1: Chef-DK と Git をインストールします

[bash]$ sudo yum -y install "git" "https://packagecloud.io/chef/stable/download?distro=6&filename=chefdk-0.2.2-1.x86_64.rpm"
[bash]$ rpm -qa | egrep "git-|chefdk"

git-1.7.1-3.el6_4.1.x86_64
chefdk-0.2.2-1.x86_64

手順 2-2: ディレクトリ /etc/chef/ を作成します

[bash]$ sudo mkdir -p /etc/chef
[bash]$ ls -ld /etc/chef/

drwxr-xr-x 2 root root 4096 Xxx XX XX:XX /etc/chef/

手順 2-3: Chef Solo の設定ファイル solo.rb を作成します

[bash]$ cat << EOF | sudo tee /etc/chef/solo.rb
environment_path "/etc/chef/environments"
data_bag_path "/etc/chef/data_bags"
cookbook_path "/var/chef/cookbooks"
file_cache_path "/var/cache/chef"
EOF

3: ラッパークックブックの作成

コミュニティに公開されているクックブック Apache2 をラップするだけの簡単なクックブックを作成します。

手順 3-1: Cookbook の置き場を作成します

[bash]$ sudo mkdir -p /var/chef/site-cookbooks
[bash]$ ls -ld /var/chef/site-cookbooks/

drwxr-xr-x 2 root root 4096 Xxx XX XX:XX /var/chef/site-cookbooks

手順 3-2: berks コマンドを使って wrapper-cookbook という名前でクックブックのひな形を作成します

[bash]$ cd /var/chef/site-cookbooks/
[bash]$ sudo chef exec berks cookbook "wrapper-cookbook" --skip-vagrant --skip-test-kitchen  --license="reserved" --maintainer="YOUR_NAME" --maintainer-email="YOUR_EMAIL"
[bash]$ ls -ld /var/chef/site-cookbooks/wrapper-cookbook/

drwxr-xr-x 10 root root 4096 Xxx XX XX:XX /var/chef/site-cookbooks/wrapper-cookbook/

手順 3-3: Cookbook のメタデータ設定ファイル metadata.rb を編集します

[bash]$  echo "depends 'apache2'" | sudo tee -a /var/chef/site-cookbooks/wrapper-cookbook/metadata.rb
metadata.rb
name             'wrapper-cookbook'
maintainer       'YOUR_NAME'
maintainer_email 'YOUR_EMAIL'
license          'All rights reserved'
description      'Installs/Configures wrapper-cookbook'
long_description 'Installs/Configures wrapper-cookbook'
version          '0.1.0'

depends 'apache2'

手順 3-4: Cookbook のデフォルトレシピファイル default.rb を編集します

[bash]$ echo "depends 'apache2'" | sudo tee -a /var/chef/site-cookbooks/wrapper-cookbook/recipes/default.rb
default.rb
#
# Cookbook Name:: wrapper-cookbook
# Recipe:: default
#
# Copyright (C) 2014 YOUR_NAME
#
# All rights reserved - Do Not Redistribute
#
depends 'apache2'

4: クックブックの適用(Chef Solo の実行)

ここでは、Chef の Environment という機能を利用して Chef Solo の実行します。

Environment を利用することで、クックブック内で指定している Attribute(変数)の値を上書きすることができます。

開発環境と本番環境など、環境によって異なるパラメーターを設定する必要がある場合に便利です。

手順 4-1: Berkshelf を使って依存関係のあるクックブックをダウンロードします

[bash]$ cd /var/chef/site-cookbooks/wrapper-cookbook/
[bash]$ sudo chef exec berks vendor /var/chef/cookbooks
[bash]$ ls -l /var/chef/cookbooks/

total 24
drwxr-xr-x.  7 root root 4096 Sep 26 03:51 apache2
-rw-------.  1 root root  266 Sep 26 03:51 Berksfile.lock
drwxr-xr-x.  6 root root 4096 Sep 26 03:51 iptables
drwxr-xr-x.  7 root root 4096 Sep 26 03:51 logrotate
drwxr-xr-x.  6 root root 4096 Sep 26 03:51 pacman
drwxr-xr-x. 10 root root 4096 Sep 26 03:51 wrapper-cookbook

手順 4-2: Node の設定ファイル node.json を作成します

[bash]$ cat << EOF | sudo tee /etc/chef/node.json
{
  "run_list": "wrapper-cookbook::default"
}
EOF

手順 4-3: Environment の置き場を作成します

[bash]$ sudo mkdir -p /etc/chef/environments
[bash]$ ls -ld /etc/chef/environments/

drwxr-xr-x 2 root root 4096 Xxx xx xx:xx /etc/chef/environments

手順 4-4: Environment の設定ファイル development.json を作成します

[bash]$ cat << EOF | sudo tee /etc/chef/environments/development.json
{
  "name": "development",
  "json_class": "Chef::Environment",
  "chef_type": "environment",
  "default_attributes": {
    "apache2": {
      "worker": {
        "startservers": 4,
        "serverlimit": 16,
        "maxclients": 1024,
        "minsparethreads": 64,
        "maxsparethreads": 192,
        "threadsperchild": 64,
        "maxrequestsperchild": 0
      }
    }
  }
}
EOF

手順 4-5: Chef Solo を実行します

[bash]$ sudo chef-solo -j "/etc/chef/node.json" -E "development"

→ レシピが実行され、エラーメッセージが表示されなければ成功です。

以上

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6