Chefはインスタンスの設定やミドルウェアの導入、設定を自動的に行うツールです。
VagrantとChefを組み合わせると、インスタンスを作成後に自動的にインスタンスに必要な導入設定を実施することができるので、コマンド一発で本番環境を作動させることも可能です。
準備
Vagrantの導入とOpenStack対応用のプラグイン導入は次の記事を参考にしてください。
Vagrantを使ってOpenStackを操作してみる
Chef Workstationの導入と設定は次の記事を参考にしてください。
Chef Workstationを構築する
なお、Chef Serverに関する設定は不要です(秘密鍵などの操作)。
次のコマンドを実行してテスト用のレシピをダウンロードします。
$ cd ~/chef-repo
$ mkdir cookbooks
$ cd cookbooks
$ chef generate cookbook learn_chef_apache2
設定
Vagrantfileは次のように設定します。赤字箇所が今回新たに追加した部分です。
require 'vagrant-openstack-provider'
Vagrant.configure('2') do |config|
config.vm.box = 'openstack'
config.ssh.username = 'ubuntu'
config.ssh.private_key_path = '~/.ssh/matsuos-vagrant-key.pem'
config.omnibus.chef_version = :latest
config.vm.provision :chef_solo do |chef|
chef.cookbooks_path = '~/chef-repo/cookbooks'
chef.run_list = 'learn_chef_apache2'
end
config.vm.provider :openstack do |os|
# OpenStack Authentication
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'
# Instance definition
os.flavor = 'm1.tiny'
os.image = 'ubuntu-14.04'
os.networks = [
{
name: 'internal',
address: '10.230.41.184'
}
]
os.floating_ip_pool = 'external'
os.keypair_name = 'matsuos-vagrant-key'
os.security_groups = ['matsuos-sg-ssh']
os.server_name = 'matsuos-01'
os.user_data = '
#cloud-config
password: zaq12wsx
chpasswd: { expire: False }
ssh_pwauth: True
hostname: matsuos-01
manage_etc_hosts: true
end
end
それでは実行してみましょう。
Vagrantfileを置いたディレクトリから次のコマンドを実行します。
$ vagrant up
インスタンスが起動してsshをリスンするまでConnection refusedメッセージが数回表示されます。
インスタンスが起動すると、cookbooksディレクトリをrsyncしているようです。
Chef Clientをインストールするのに少し時間がかかります。
Chefを起動し、run_listに指定したレシピを読み込みます。
apache2を導入し、index.htmlを構成します。
apacheを起動して完成です。
出来上がったインスタンスのパブリックIPアドレスを確認します。
ブラウザでこのアドレスにアクセスします。
”hello world”という文字が表示されました。
0 件のコメント:
コメントを投稿