低レベルインフラエンジニアの忘備録

Linux系の各種作業を自分用の忘備録として残しています

VagrantのCentOSにchefをインストール

VagrantのゲストOS上にchefをインストールし、簡単な動作を試してみます

環境

RHEL6.7(ホストOS)
CentOS6.7(ゲストOS) ※Vagrantで仮想環境を構築
ruby2.3.0p0 ※gemでインストールしている環境
Chef: 12.9.38

chefインストール

# gem install chef

いろいろなやり方があるかと思いますが、今回はgemでインストールしています

hello,worldを出力してみる

お決まりかもしれませんが、とりあえずこちらをやってみます

(1)クックブック格納用のディレクトリ作成

# mkdir /var/chef/ /var/chef/cookbooks

こちらはどこでもよいかと思いますが、自分が見ていた書籍のパスに合わせています

(2)クックブックの作成

「hello」がクックブック名、「/var/chef/cookbooks」がクックブックの出力先(-oオプション)となります

# knife cookbook create hello -o /var/chef/cookbooks
WARNING: No knife configuration file found
** Creating cookbook hello in /var/chef/cookbooks
** Creating README for cookbook: hello
** Creating CHANGELOG for cookbook: hello
** Creating metadata for cookbook: hello
# cd /var/chef/cookbooks
# ls -l
total 4
drwxr-xr-x 10 root root 4096 Apr 25 03:08 hello
# cd hello/
# ls -l
total 44
drwxr-xr-x 2 root root 4096 Apr 25 03:08 attributes
-rw-r--r-- 1 root root  430 Apr 25 03:08 CHANGELOG.md
drwxr-xr-x 2 root root 4096 Apr 25 03:08 definitions
drwxr-xr-x 3 root root 4096 Apr 25 03:08 files
drwxr-xr-x 2 root root 4096 Apr 25 03:08 libraries
-rw-r--r-- 1 root root  274 Apr 25 03:08 metadata.rb
drwxr-xr-x 2 root root 4096 Apr 25 03:08 providers
-rw-r--r-- 1 root root 1448 Apr 25 03:08 README.md
drwxr-xr-x 2 root root 4096 Apr 25 03:08 recipes
drwxr-xr-x 2 root root 4096 Apr 25 03:08 resources
drwxr-xr-x 3 root root 4096 Apr 25 03:08 templates

クックブック用のファイルが生成されます

(3)レシピを編集

# cd /var/chef/cookbooks/hello/recipes
# vi default.rb
#
# Cookbook Name:: hello
# Recipe:: default
#
# Copyright 2016, YOUR_COMPANY_NAME
#
# All rights reserved - Do Not Redistribute
#
log "Hello,World!"

「Hello,Word!」の行を追加します

(4)ChefSoloの実行

「hello」がクックブック名(-oオプション)となります

# chef-solo -o hello
[2016-04-25T03:13:04+01:00] WARN: *****************************************
[2016-04-25T03:13:04+01:00] WARN: Did not find config file: /etc/chef/solo.rb, using command line options.
[2016-04-25T03:13:04+01:00] WARN: *****************************************
Starting Chef Client, version 12.9.38
[2016-04-25T03:13:09+01:00] WARN: Run List override has been provided.
[2016-04-25T03:13:09+01:00] WARN: Original Run List: []
[2016-04-25T03:13:09+01:00] WARN: Overridden Run List: [recipe[hello]]
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 1 resources
Recipe: hello::default
  * log[Hello,World!] action write


Running handlers:
Running handlers complete
Chef Client finished, 1/1 resources updated in 04 seconds

Hello,Wordが出力されています

特定のパッケージをインストールする

クックブックを使ってdovecotをインストールしてみます
手順に関してはほぼ先ほどと同じですが、クックブックの内容が異なります
dovecotにしたのは特に理由はありません(笑)

(1)クックブックの作成

# knife cookbook create dovecot -o /var/chef/cookbooks
WARNING: No knife configuration file found
** Creating cookbook dovecot in /var/chef/cookbooks
** Creating README for cookbook: dovecot
** Creating CHANGELOG for cookbook: dovecot
** Creating metadata for cookbook: dovecot

(2)レシピを編集

# vi /var/chef/cookbooks/dovecot/recipes/default.rb
package "dovecot" do
        action :install
end

上記の3行を追加します

(3)ChefSoloの実行

# chef-solo -o dovecot
[2016-04-25T05:03:59+01:00] WARN: *****************************************
[2016-04-25T05:03:59+01:00] WARN: Did not find config file: /etc/chef/solo.rb, using command line options.
[2016-04-25T05:03:59+01:00] WARN: *****************************************
Starting Chef Client, version 12.9.38
[2016-04-25T05:04:04+01:00] WARN: Run List override has been provided.
[2016-04-25T05:04:04+01:00] WARN: Original Run List: []
[2016-04-25T05:04:04+01:00] WARN: Overridden Run List: [recipe[dovecot]]
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 1 resources
Recipe: dovecot::default
  * yum_package[dovecot] action install
    - install version 2.0.9-19.el6_7.2 of package dovecot

Running handlers:
Running handlers complete
Chef Client finished, 1/1 resources updated in 18 seconds

dovecotがインストールされた旨の出力があります

(4)実際にインストールされているか確認

# rpm -qa | grep dovecot
dovecot-2.0.9-19.el6_7.2.x86_64

実際にインストールされていることが確認できます