2015年11月時点で個人勉強で構築した手順です。無くさないよう、ここで記載します。
最小構成でインストールしたCentOS7.1にChef Server 12.2をインストール手順です。
本手順で作成される環境
ソフトウェア | バージョン |
---|---|
Chef-Server | chef-server-core-12.2.0-1 |
OS | CentOS7.1 |
workstation | Ubuntu15.04 |
node | Centos7.1 |
CentOSの設定
SELinuxを無効にする
/etc/sysconfig/selinuxを編集
SELINUX=disabled
変更後、CentOSを再起動
reboot
再起動後、SELinuxは無効になっているかを確認
getenforce
Disabled
であればOK。
firewalldでHTTPSを許可
デフォルトzoneにhttpを追加する
firewall-cmd --zone=public --add-service=https --permanent
success
が出力
追加した設定を反映
firewall-cmd --reload
success
が出力
httpでのアクセスが許可されたか確認
firewall-cmd --zone=public --list-services
dhcpv6-client https ssh
が出力、https追加されたことを確認
Chef Serverの導入
今回はCentOS7上で構築するので、以下通りになる。ほかの環境であれば、chef公式パッケージダウンロードページ
パッケージのインストール
wget https://web-dl.packagecloud.io/chef/stable/packages/el/7/chef-server-core-12.2.0-1.el7.x86_64.rpm
rpm -ivh chef-server-core-12.2.0-1.el7.x86_64.rpm
chef-server-ctl reconfigure
注意点
上記rpmインストール完了後に、chef-server-ctlコマンドが使用可能になる。実行前に、hostnameの情報を確認すべき。
場合によって、/etc/hostsを編集し、IP host.domain
のエントリーを追記。
Web UIのインストール
chef-server-ctl install opscode-manage
chef-server-ctl reconfigure
opscode-manage-ctl reconfigure
これで、ブラウザからアクセス可能になる。
補足
今回の場合localhost.domain = chef-server.sjteam
なので、https://chef-server.sjteam
もちろんDNS登録していないので、自分解決。また、https://ip_of_chef_server:443
administrator権限のユーザを作成
chef-server-ctl user-create user_name first_name last_name email password --filename FILE_NAME
例:
chef-server-ctl user-create kaminari.y Kaminari Y kaminari.y@jsteam.co.jp ilovechef --filename /etc/chef/kaminari.pem
所属組織を作成
chef-server-ctl org-create short_name "full_organization_name" --association_user user_name --filename ORGANIZATION-validator.pem
例
chef-server-ctl org-create sjteam "sjteam LAC, Inc." --association_user kaminari --filename /etc/chef/sjteam-validator.pem
これでChef Serverの設定はほぼ完了となる。以下のWorkstation側
==========================================================================
Workstationの設定
chef clientのコマンド類のインストール
curl -L https://www.opscode.com/chef/install.sh | bash
rootユーザで実行、sudoでエラーになる。
Chef Serverとの連携の鍵を設置
前述に、Chef Serverの/etc/chef/
以下に*.pemファイルが作成され、このファイルはWorkstationの~/.chef/
以下に設置
rloginでscp転送したので、手順は割愛
cookbookの雛形取得
github上から取得するので、Workstationにgitをインストールしていない場合、ここでインストール。
ほかの方法でも良いですが、今後cookbookの修正・管理を考え、ぜひgitを導入したほうが良い。
gitの導入方法はここで割愛
git clone git://github.com/opscode/chef-repo.git
上記より、cookbookの雛形を取得
knifeの設定
knife configure -i
そして以下通りになる(参考)
WARNING: No knife configuration file found
Where should I put the config file? [/home/kaminari/.chef/knife.rb]
Please enter the chef server URL: [https://kaminari-chef-client:443] https://chef-server.sjteam:443
Please enter a name for the new user: [kaminari] admin
Please enter the existing admin name: [admin] kaminari
Please enter the location of the existing admin's private key: [/etc/chef-server/admin.pem] /home/kaminari/.chef/kaminari.pem
Please enter the validation clientname: [chef-validator] sjteam-validator
Please enter the location of the validation key: [/etc/chef-server/chef-validator.pem] /home/kaminari/.chef/sjteam-validator.pem
Please enter the path to a chef repository (or leave blank): /home/kaminari/chef-repo
Creating initial API user...
Please enter a password for the new user:
最後にエラーになったが、~/.chef/knife.rb
が作成された。別に手動で作成、修正も効くので、エラーを無視。
最終に修正した結果は以下を参考
log_level :info
log_location STDOUT
node_name 'kaminari'
client_key '/home/kaminari/.chef/kaminari.pem'
validation_client_name 'sjteam-validator'
validation_key '/home/kaminari/.chef/sjteam-validator.pem'
chef_server_url 'https://chef-server.sjteam/organizations/sjteam'
syntax_check_cache_path '/home/kaminari/.chef/syntax_check_cache'
cookbook_path [ '/home/kaminari/chef-repo/cookbooks' ]
注意点
ここでchef_server_url
をhttps://host.domain/organizations/実際のorganization を変更する必要があります。
SSL疎通設定
knifeの証明書関連の設定
knife ssl fetch https://chef-server.sjteam
ちなみに、workstaionの/etc/hosts
にもChef Serverのエントリー追記を忘れずに!
設定部分完了
ここまで成功していると、以下のコマンドが使えるようになっている。
knife user list
knife client list
node登録
knifeで操作できるように、テストnodeを作成し、Chef Serverに登録
ここはCentOS7.1インストール完了後に、bootstrapを用いて実施
knife bootstrap IP -x user -P password -N node_name --run-list 'role[base_common]'
オプション | 値 |
---|---|
IP | nodeのIPアドレス |
user | node上実行権限あるユーザ名(sudoの場合、--sudoが必要) |
password | 説明不要 |
node_name | chef-serverに登録するときの名前 |
run-list | nodeにchef-client後、実施したいrecipe |
上記完了後に、Chef ServerにNode登録
chef-client
エラーがなければ
knife node list
web-server
が出力される。