用意するもの
Chef Workstationを導入するPCもしくはインスタンス私はUbuntuの仮想インスタンスを用意しました。
Chef Workstationを導入する
下記URL先にあるChef Tutorialの案内に従います。https://learn.chef.io/manage-a-node/ubuntu/
Chef DKをインストールします。
Chef Serverを利用可能にする
引き続き同じURLの案内に従ってChef Server(ホステット版)を利用可能にします。サインナップが必要ですが無料です。
Chef ServerでOrganizationを1つ作成します。
Organizationを作成するとStarter Kitをダウンロードできるようになります。
Starter Kitをダウンロードして指定のディレクトリでUnzipします。
Starter KitにはChef Server (Hosted)にアクセスするための認証キーや組織名などが含まれています。
Vagrantを導入する
下記のサイトからVagrantをダウンロードして導入します。https://www.vagrantup.com/downloads.html
Vagrantfileを作成する
Starter Kitで作成した~/chef-repoディレクトリに移動します。
vagrant initコマンドを実行します。
Vagrantfileを編集します。
VagrantのProvisionerとしてChef Clientを指定するガイドは下記のURLにあります。
https://docs.vagrantup.com/v2/provisioning/chef_client.html
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
require 'vagrant-openstack-provider'
Vagrant.configure('2') do |config|
config.vm.provision :chef_client do |chef|
# ~/chef-repo/.chef/knife.rbに以下の3つのパラメータの内容が記述されています
chef.chef_server_url = 'https://api.chef.io/organizations/matsuos'
chef.validation_key_path = '~/chef-repo/.chef/matsuos-validator.pem'
chef.validation_client_name = 'matsuos-validator'
chef.add_recipe 'recipe[learn_chef_apache2]'
end
config.vm.define "primary-node" do |primary|
primary.vm.provider :openstack do |os|
os.networks = [ {
name: 'internal',
address: '10.230.41.185'
} ]
os.server_name = 'matsuos-primary-node'
os.user_data = '
#cloud-config
password: zaq12wsx
chpasswd: { expire: False }
ssh_pwauth: True
hostname: matsuos-primary-node
manage_etc_hosts: true
'
end
end
config.vm.define "backup-node" do |backup|
backup.vm.provider :openstack do |os|
os.networks = [ {
name: 'internal',
address: '10.230.41.186'
} ]
os.server_name = 'matsuos-backup-node'
os.user_data = '
#cloud-config
password: zaq12wsx
chpasswd: { expire: False }
ssh_pwauth: True
hostname: matsuos-backup-node
manage_etc_hosts: true
'
end
end
config.vm.box = 'openstack'
config.ssh.username = 'ubuntu'
# OpenStack上でキーペアを作成し、ダウンロードした秘密鍵を指定します
config.ssh.private_key_path = '~/chef-repo/matsuos-vagrant-key.pem'
config.omnibus.chef_version = :latest
config.vm.provider :openstack do |os|
os.openstack_auth_url = 'https://icos-sea.openstack.blueboxgrid.com:5001/v2.0'
os.openstack_network_url = 'https://icos-sea.openstack.blueboxgrid.com:9797/v2.0'
os.username = 'matsuos'
os.password = 'xxxxxxxx'
os.tenant_name = 'demo project'
os.flavor = 'm1.tiny'
os.image = 'ubuntu-14.04'
os.floating_ip_pool = 'external'
os.keypair_name = 'matsuos-vagrant-key'
os.security_groups = ['matsuos-sg-ssh']
end
end
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
OpenStackへアクセスするあたりの設定はこちらのリンクを参照ください。
Vagrantを使ってOpenStackを操作してみる
実行する
~/chef-repoに移動し(Vagrantfileがあるディレクトリ)、vagrant upを実行します。もしインスタンスの作成には成功したものの、Chefの実行で失敗するような場合は、vagrant upを実行してもすでに作成済みといわれて何も動きません。
そのような場合はvagrant provisionを実行します。
Chef Server (hosted)のサイトでNodeを見ると、下図のように今プロビジョニングしたインスタンスが見えるようになります。
実行結果をブラウザで見ると、確かにChef Tutorialにあるような画面が出てきます。