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
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作成
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
chef-server-ctl install opscode-manage
opscode-manage-ctl reconfigure
chef-reporting
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
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サーバー側の手順
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
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
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の実行
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 -> 新規ユーザーでログインして参加 という流れになります。
chef-server-ctl org-user-add -a orgname user_name2
※現状、orgへのinviteに対するacceptはWebUIからじゃないとできないかも…。
その他の注意点
- chef-serverからmailが送られる設定をきちんとすればメールでいろいろ送られるはずなんですが、そこまで試していません。