皆様お久しぶりです。井上です。
「料理人を目指そうと思う! -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を公式サイトからダウンロードします。
導入先の環境に合ったものをダウンロードして下さい。
コマンドからはこのようにダウンロードが出来ます。
$ 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へノードの登録が完了しました。これでようやく全ての登場人物がつながった状態になります。
あとはレシピを用意して実行すると自動的に環境が構築されます!
レシピの作成はまた次回に行いますので、もうしばらくお待ち下さい。
コメントを残す