サーバー状態管理ツール Chef-Server のインストール #opschef #erchef

Chef-Server 11系をインストールした際の作業メモです。

環境/構成

  • 環境
    • OS: CentOS6.4 (x86_64)
    • Chef-Server: 11.0.8 (Chef-Client: 11.4.0)
  • 構成
    • Chef-Server と Chef-Workstation を同一ホストにセットアップします。

前提条件

  • 443/tcp の通信を許可
  • /etc/hosts に FQDN を追加

Chef-Server のインストール

1. RPM パッケージのダウンロード

$ curl -O https://opscode-omnibus-packages.s3.amazonaws.com/el/6/x86_64/chef-server-11.0.8-1.el6.x86_64.rpm

2. yum コマンドでインストール/セットアップ

$ sudo yum localinstall --nogpgcheck ./chef-server-11.0.8-1.el6.x86_64.rpm
$ sudo chef-server-ctl reconfigure
chef-server Reconfigured!
$ sudo chef-server-ctl test
70 examples, 0 failures

3. 必要なコマンドのシンボリックリンク作成
必要そうなコマンドにパスを通す*1ために、シンボリックリンクを作成します。

$ sudo ln -s /opt/chef-server/embedded/bin/chef-apply /usr/local/bin/chef-apply
$ sudo ln -s /opt/chef-server/embedded/bin/chef-client /usr/local/bin/chef-client
$ sudo ln -s /opt/chef-server/embedded/bin/chef-shell /usr/local/bin/chef-shell
$ sudo ln -s /opt/chef-server/embedded/bin/chef-solo /usr/local/bin/chef-solo
$ sudo ln -s /opt/chef-server/embedded/bin/knife /usr/local/bin/knife

4. WebUI の確認
Web ブラウザで、"https://chef-server/" へアクセスします。
以下のアカウントでログインすると、パスワード変更画面になるので、新しいパスワードを設定します。*2

  • User: admin / Pass: p@ssw0rd1

Chef-Workstation (knife) の設定

admin ユーザーの権限で knife の設定を行います。
1. 鍵の準備

$ mkdir ~/.chef; cd ~/.chef
$ sudo cp -a /etc/chef-server/admin.pem .
$ sudo cp -a /etc/chef-server/chef-validator.pem .
$ sudo chown admin:admin ./*.pem

2. セットアップ
質問が 10 系のものになっているので、chef server URL の指定に注意します。

$ knife configure
WARNING: No knife configuration file found
Where should I put the config file? [/home/admin/.chef/knife.rb
Please enter the chef server URL: [http://chef-server:4000] https://localhost
Please enter an existing username or clientname for the API: [admin] admin
Please enter the validation clientname: [chef-validator] chef-validator
Please enter the location of the validation key: [/etc/chef/validation.pem] /home/admin/.chef/chef-validator.pem
Please enter the path to a chef repository (or leave blank): 
*****
(中略)
*****
Configuration file written to /home/admin/.chef/knife.rb

3. 確認

$ knife --version
Chef: 11.4.0
$ knife client list
chef-validator
chef-webui

4. 標準ディレクトリの取得

$ git clone https://github.com/opscode/chef-repo.git

Chef-Node の登録

Node 側から chef-client コマンドを実行することで、登録することができます。
登録の際に、chef-validator の秘密鍵と設定ファイルが必要です。
1. Chef のインストール

$ sudo sh -c "curl -L https://www.opscode.com/chef/install.sh | bash"

2. 秘密鍵/設定ファイル(/etc/chef/client.rb)の準備
Chef-Server で作成された chef-validator.pem を Node 側に /etc/chef/validation.pem としてコピーします。

$ sudo vi /etc/chef/client.rb
log_level        :info
log_location     STDOUT
chef_server_url 'https://chef-server'
node_name       'chef-node'

3. Chef-Node の登録

$ sudo chef-client


11 系から Chef-Server の RPM パッケージが提供されるようになったので、インストールが簡単になりました。
/opt/chef-server にインストールされるので、RubyGems でインストールしていた 10 系に比べると、キレイな形で運用できそうです。
あと、11 系からバックエンドな DB が PostgreSQL に変更になっているので、バックアップとか考える必要があります。

Chef | Opscode

*1:/opt/chef-server/embedded/bin には、RabbitMQ や PostgreSQL などコンポーネントのコマンドも含まれているため、/opt/chef-server/embedded/bin を 環境変数 PATH へ追加するのはやめました

*2:"Regenerate Private Key" はチェックしません