knife zeroを使ってレシピを適用する

Chefでよく使われるknifeコマンドですが、そのプラグインであるknife zeroを使ってレシピを適用する方法を紹介します。
knife zeroはknifeプラグインで、リモートnode上でchef-clientを実行するツールです。

リモートnodeとはchefを適用するサーバー(管理対象となるサーバー)のことです。

インストール

今回はGemfileに定義してインストールします。

1
2
# Gemfile
gem 'knife-zero'

以下でインストールされます。

1
$ bundle

chefをリモートnodeにインストール

まずはchefをリモートnodeにインストールします。
以下のコマンドでインストールします。

1
$ bundle exec knife zero bootstrap shoyan@server01.example.com --sudo

実行すると node/ 配下にファイルが作成さます。

chef_environmentrun_listを追加します。

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
{
"name": "server01.example.com",
"chef_environment": "production",
"run_list": [
“role[awesome_cookbook]"
],
"normal": {
"knife_zero": {
"host": "server01.example.com"
},
"tags": [

]
},
"automatic": {
"fqdn": "server01.example.com",
"os": "linux",
"os_version": "2.6.32-504.3.3.el6.x86_64",
"platform": "centos",
"platform_version": "6.4",
"hostname": "server01.example.com",
"ipaddress": “192.168.1.1",
"roles": [

]
}
}

リモートnodeにログインして、chefのコマンドが実行されていることを確認してみます。

1
2
3
4
$ ssh shoyan@server01.example.com

[shoyan@server01 ~]$ chef-[Tabを押す]
chef-apply chef-client chef-shell chef-solo

レシピをリモートnodeに適用する

Chefを実行する準備ができました。
以下のコマンドでレシピをリモートnodeに適用します。

1
$ bundle exec knife zero converge 'fqdn:server01.example.com' -x shoyan