chef

[Chef12]Chef-Serverの設定

More than 3 years have passed since last update.

http://docs.chef.io/server/install_server.html

http://downloads.chef.io/

インストール自体は手順に添うだけで全く問題ないのですが、client回り等のchef10/11からの移行時に変更になる点を主にメモしておきます。なので、本題は後ろの方です。

yumで参照しているリソースなんかは最新版を確認して下さい。


chef-serverのインストール


基本


  • chef-server-coreだけインストールした後は、chef-server-ctl等のコマンドでinstallしたりreconfigureしたりする。設定ファイルを変更したらreconfigureする。

  • chef-server-core関連のファイルは /etc/opscode にある

  • ログは /var/log/opscode にある

以下の手順では、


  • chef-server-core

  • manage ui

  • reporting

を1つのサーバーにインストールしたあと、もう1つサーバーを準備して


  • chef-analytics

をインストールします。(chef-analyticsはすぐ用意しなくてもserverの利用に問題ないです)


chef-server-core


chef-server-coreのインストール

yum install https://web-dl.packagecloud.io/chef/stable/packages/el/6/chef-server-core-12.0.3-1.x86_64.rpm

chef-server-ctl reconfigure



user/org作成


user/organization作成

## user作成

chef-server-ctl user-create user_name first_name last_name email password --filename ADMIN_PEM_FILE_NAME

## org作成
chef-server-ctl org-create short_name full_organization_name --association_user user_name --filename ORG_VALIDATION_KEY_FILE_NAME


/etc/opscode/admin.pem

/etc/opscode/orgname-validator.pem

とかの名前が分かりやすいでしょう。

既定だと以下のdirにchef-analytics用の設定ファイルが生成されます。別のサーバーでchef-analyticsを実行する場合は、このファイルをコピーすることになります。

/etc/opscode-analytics/webui_priv.pem 

/etc/opscode-analytics/actions-source.json


chef manage ui


install

chef-server-ctl install opscode-manage

opscode-manage-ctl reconfigure


chef-reporting

https://docs.chef.io/install_reporting.html


install

chef-server-ctl install opscode-reporting

chef-server-ctl reconfigure
opscode-reporting-ctl reconfigure
opscode-reporting-ctl test


インストール後の確認諸々


注意点


  • erlangのデーモンプロセスであるbeamがlistenしてなかったら何かの設定が足りない。netstat -tlnpとかで確認

  • testやpreflightなどの各種チェックコマンドでエラーが出る場合はだいたい設定ファイルが間違ってます。


chef-analysticサーバーのインストール


chef-analystic

https://docs.chef.io/install_analytics.html

https://downloads.chef.io/analytics/

Standalone1.1のの手順に準じます。


インストール済みchef-server側の設定

chef-server-ctl stop

vi /etc/opscode/chef-server.rb


/etc/opscode/chef-server.rb

rabbitmq['vip'] = 'BACKEND_IP'

rabbitmq['node_ip_address'] = '0.0.0.0'
## chef-analytics用設定
oc_id['applications'] = {
'analytics' => {
'redirect_uri' => 'https://analytics.example.com'
}
}

chef-server-ctl reconfigure

chef-server-ctl start

以下のファイルを、chef-analysticsサーバー側に転送して下さい。

/etc/opscode-analytics/webui_priv.pem 

/etc/opscode-analytics/actions-source.json


chef-analysticsサーバー側の手順


chef-analysticsのインストール

yum install -y https://web-dl.packagecloud.io/chef/stable/packages/el/6/opscode-analytics-1.1.1-1.x86_64.rpm

vi /etc/opscode-analytics/opscode-analytics.rb



/etc/opscode-analytics/opscode-analytics.rb

analytics_fqdn "analytics.example.com"

topology "standalone"

# 転送済み確認

cat /etc/opscode-analytics/webui_priv.pem
cat /etc/opscode-analytics/actions-source.json

opscode-analytics-ctl preflight-check
opscode-analytics-ctl reconfigure

完了したら https://analytics.example.com にアクセスしてみましょう。


chef-clientの実行


client.rbの作成

http://docs.chef.io/client/config_rb_client.html

http://docs.chef.io/chef_client_security.html


/etc/chef/client.rb

log_level              :info

log_location /var/log/chef-client.log
chef_server_url 'https://<chef-server>/organizations/<orgname>'
validation_client_name '<orgname>-validator'
validation_key '/etc/chef/validator.pem'
ssl_verify_mode :verify_none


chef_server_url/validation_client_name

organizationごとに違う値が入ります。


ssl_verify_mode

デフォルト設定で接続先chef-serverの証明書を検証するようになっていて、上記のchef-serverで入る手順だと当然SSLは自己証明書。エラーで弾かれるのでclient.rbでモードを変更しておきます。


validation.pemの設置

orgnizationごとに別々のvalidation.pemが設定される。

org-createコマンド実行時にオプション--filenameを指定しておけば、サーバー上にpemが保存されていますので、clinetに適宜転送したりします。

ない場合は(WebUIの場合)Administration->OrganizationsからReset Validate Keyを実行して再生成。


knifeの実行


~/.chef/knife.rb(例)

node_name                'user_name'

client_key '~/.chef/ADMIN_PEM_FILE_NAME'
chef_server_url 'https://<chef-server>/organizations/<orgname>'
cookbook_path [ '~/chef-repo/cookbooks' ]
ssl_verify_mode :verify_none

knife client list

> org-validator

インストール直後でもvalidatorだけは見えるはずです。

knifeをユーザーごとに行うなら個別にユーザーを作成し、orgと紐づけておきます。Analyticsとかで誰が何の操作をしたか追えるようになります。WebUIからだと、/signupで新規ユーザー作成 -> Organizetionから新規ユーザーをInvite -> 新規ユーザーでログインして参加 という流れになります。


CUI

chef-server-ctl org-user-add -a orgname user_name2


※現状、orgへのinviteに対するacceptはWebUIからじゃないとできないかも…。


その他の注意点


  • chef-serverからmailが送られる設定をきちんとすればメールでいろいろ送られるはずなんですが、そこまで試していません。