調べても調べてもChefSoloの構築方法ばかり…。
ChefServerを構築したので手順をまとめます。
備忘録です。
前提
- CentOS7
- ChefServer + Client構成
- Chef-soloじゃないよ
- Workstationとchefserverを同居させます。
- Vagrant使います
- Chef-Server12.6.0でやります。
仮想サーバを立てる
Vagrantfile
Vagrant.configure(2) do |config|
$script = <<EOF
yum install wget
yum -y install ibus-kkc vlgothic-*
localectl set-locale LANG=ja_JP.UTF-8
source /etc/locale.conf
EOF
config.vm.define "chef-server" do |node|
node.vm.box = "CentOS7.0"
node.vm.hostname = "chef-server"
node.vm.network :public_network
node.vm.network :private_network, ip: "192.168.100.5"
node.vm.provision :shell, :inline => $script
end
config.vm.define "chef-client01" do |node|
node.vm.box = "CentOS7.0"
node.vm.hostname = "chef-client01"
node.vm.network :public_network
node.vm.network :private_network, ip: "192.168.100.6"
node.vm.provision :shell, :inline => $script
end
end
ローカル
$ vagrant up
ChefServerインストール
vagrantで立ち上げたホスト「chef-server」に対してインストールします。
192.168.100.5
#chefの動作要件に、sslちゃんとやれと書いてあった気がする
$ sudo yum install -y wget ntp openssl-devel
#chefの動作要件に、NTPちゃんとやれと書いてあった気がする
$ sudo ntpdate ntp.nict.jp
#chefServerのrpmを落としてくる
$ wget https://packages.chef.io/stable/el/7/chef-server-core-12.6.0-1.el7.x86_64.rpm
#ChefServerをインストールする
$ sudo rpm -Uvh ./chef-server-core-12.6.0-1.el7.x86_64.rpm
#なんか設定する
$ chef-server-ctl reconfigure
#確認する
$ chef-server-ctl status
#テストする
$ chef-server-ctl test
#ユーザをつくる
$ chef-server-ctl user-create admin firstname familyname spinach.jp@gmail.com 'P@ssw0rd' --filename /home/vagrant/.chef/admin.pem
#グループ的なやつを作る
$ chef-server-ctl org-create chef "Chef" --association_user admin --filename /etc/chef-server/chef-validator.pem
Workstationのインストール
ChefServerに対してCookbookをアップロードしたりいろいろするWorkStationをインストールします。
192.168.100.5
$ wget https://packages.chef.io/stable/el/7/chefdk-0.14.25-1.el7.x86_64.rpm
$ rpm -Uvh ./chefdk-0.14.25-1.el7.x86_64.rpm
#workstationのknifeを設定
$ knife configure
#適当にEnter連打
#すると、~/.chef/knife.rbが出力されるので編集する
$ vi ~/.chef/knife.rb
↓こうする
knife.rb
log_level :info
log_location STDOUT
node_name 'admin'
client_key '/home/vagrant/.chef/admin.pem'
validation_client_name 'chef-validator'
validation_key '/etc/chef-server/chef-validator.pem'
cookbook_path [ '~/chef-repo/cookbooks']
chef_server_url 'https://chef-server:443/organizations/chef'
syntax_check_cache_path '/home/vagrant/.chef/syntax_check_cache'
192.168.100.5
#動作確認
$ cp /var/opt/opscode/nginx/ca/chef-server.crt /root/.chef/trusted_certs/
$ knife ssl check
Connecting to host chef-server:443
Successfully verified certificates from `chef-server'
注意点
ChefServerへはIP指定でのアクセスではなく、名前解決できるドメイン名でアクセスする必要があります。
その為、/etc/hostsの中身に、chef-server
を記載しておく必要があります。
ChefClientインストール
Workstationから、対象のサーバに対してChefClientをインストールします。
ちなみに、この作業と同時に、対象のホスト情報がChefServerに登録されます。
192.168.100.5
knife bootstrap 192.168.100.6 -x root -P vagrant --sudo
Cookbookの作成
192.168.100.5
$ mkdir ~/chef-repo
$ cd ~/chef-repo
$ mkdir cookbooks
$ cd cookbooks
$ chef generate cookbook create_httpd
$ chef generate template create_httpd index.html
レシピの反映
192.168.100.5
#レシピをいじったら、ChefServerに対してアップロード
$ knife upload cookbook
#対象のホストからchef-clientコマンドを実行
$ knife ssh 192.168.100.6 'sudo chef-client' --manual-list --ssh-user root --ssh-password 'vagrant'