皆様お久しぶりです。井上です。
料理人を目指そうと思う! -Chef導入編-」に続いての導入編第二弾になります。
前回はChef Serverのセットアップまで完了していました。ログインするアカウントはまだ作成していませんので、まずはそこから行い、レシピなどを作成するWorkstationの構築からノード登録までを行って行きたいと思います。

アカウントの作成は管理画面上からも出来るようなのですが、試したところ、どうも上手く行かず結局ダメでした。
コマンドラインからユーザーの作成、組織の作成が出来ますので、今回はその方法で進めます。

ユーザー、組織(organization)の作成

Chef Serverにsshで入って頂き、下記のコマンドを参考に各自の環境にそって入力して下さい。

ユーザー登録

  • ユーザー名:admin

$ sudo chef-server-ctl user-create admin firstname lastname your@mail.address password --filename admin.pem

ここで設定したユーザー名、パスワードで管理画面にログインが出来るようになります。

組織登録

  • 組織名のショートネーム:adjust
  • 組織名のフルネーム:adjust
  • 関連付けるユーザー:admin

$ sudo chef-server-ctl org-create adjust adjust --association admin --filename adjust-validator.pem

※filenameには必ず組織名と”-validator.pem”を組み合わせたものにする

$ ls
adjust-validator.pem admin.pem

秘密鍵が2つ作成されました。

削除方法

ついでに削除方法です。必ず組織から削除しましょう。

組織の削除

$ sudo chef-server-ctl org-delete adjust

ユーザーの削除

$ sudo chef-server-ctl user-delete admin

Workstationの構築

さて、ここからが本題です。これからWorkstationの環境を構築しますが、前提条件は以下のような感じです。

  • Workstation
    • レシピやCookbookの作成、更新を行う環境です。
    • すでに開発環境として使っていたPC上のVMに構築します。VMwareでCentOS6を動かしています。設定方法などに関しては省略致します。
  • Node
    • ノードはChefを使って構築、管理される対象です。
    • FQDNが必要になります。FQDNが取得出来ない場合はhostsなどで指定してあげましょう。

Chef Development Kitのインストール

まずはChef Development Kitを公式サイトからダウンロードします。
dk-downloads

導入先の環境に合ったものをダウンロードして下さい。

コマンドからはこのようにダウンロードが出来ます。
$ wget https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chefdk-0.10.0-1.el6.x86_64.rpm -O chefdk-0.10.0-1.el6.x86_64.rpm

ファイルサイズが140MBありますので空き容量に気をつけて下さい。
インストールします。

$ sudo rpm -Uvh chefdk-0.10.0-1.el6.x86_64.rpm
...中略...
Thank you for installing Chef Development Kit!

簡単だ!
続いてWorkstationからChef Serverにアクセスするための準備を行います。

Workstationに秘密鍵の転送

Chef Serverで作成したユーザーと組織の鍵をWorkstationに保存します。

$ mkdir ~/.chef
$ scp adjust@xxx.xxx.xxx.xxx:/home/user/chef/admin.pem ~/.chef/admin.pem
$ scp adjust@xxx.xxx.xxx.xxx:/home/user/chef/adjust-validator.pem ~/.chef/adjust-validator.pem

SSL証明書の取得

続いてSSL証明書を取得しておきます。
Chef12からSSL証明書の検証を行うのがデフォルトになったようなので、事前に取得しておきます。
Workstationで実行します。https://xxxx.xxxx.xx/はChef Serverになります。

$ knife ssl fetch -s https://xxxx.xxxx.xx/
WARNING: No knife configuration file found
WARNING: Certificates from xxx.xxx.xxx.xxx will be fetched and placed in your trusted_cert
directory (/home/user/.chef/trusted_certs).
Knife has no means to verify these are the correct certificates. You should
verify the authenticity of these certificates after downloading.
Adding certificate for xxxx.xxxx.xx in /home/user/.chef/trusted_certs/xxxx_xxxx_xx.crt

SSLの確認をします。以下のように表示されればOKです。

$ knife ssl check
Connecting to host xxxx.xxxx.xx:443
Successfully verified certificates from `xxxx.xxxx.xx'

knifeコマンドの初期設定

次にknifeコマンドの初期設定を行います。ナイフが無いと調理が出来ませんからね!
実行するといくつか質問されますので、各自の環境を踏まえて設定して下さい。

$ knife configure
WARNING: No knife configuration file found
Where should I put the config file? [/home/user/.chef/knife.rb] [空エンター]
Please enter the chef server URL: [https://localhost:443] https://xxxx.xxxx.xx/organizations/[組織名]
Please enter an existing username or clientname for the API: [adjust] admin
Please enter the validation clientname: [chef-validator] adjust-validator
Please enter the location of the validation key: [/etc/chef-server/chef-validator.pem] ~/chef/adjust-validator.pem
Please enter the path to a chef repository (or leave blank): ~/chef
*****

You must place your client key in:
  /home/user/.chef/admin.pem
Before running commands with Knife!

*****

You must place your validation key in:
  /home/user/chef/adjust-validator.pem
Before generating instance data with Knife!

*****
Configuration file written to /home/user/.chef/knife.rb

設定内容は/home/user/.chef/knife.rbに書き出されているので確認してみてください。

Chef Serverへノードを登録

最後にChefを使って構築したいサーバへChef Clientをインストールし、Chef Serverへノード登録を行います。

$ knife bootstrap [接続先ホスト名] -N [ノード名] --ssh-user [SSHのユーザー名] --sudo --bootstrap-install-command "curl -L https://www.chef.io/chef/install.sh | bash"

パスワードが必要な場合は入力が求められます。
ノード名の指定は12.4から必須になったようです。

少し時間がかかりますが完了後、Chef Server管理画面のNodesを開くと、いま実行したノードが追加されているのが確認出来ると思います。

以上でChef Serverへノードの登録が完了しました。これでようやく全ての登場人物がつながった状態になります。
あとはレシピを用意して実行すると自動的に環境が構築されます!

レシピの作成はまた次回に行いますので、もうしばらくお待ち下さい。