Skip to content

Instantly share code, notes, and snippets.

@ikikko ikikko/weekendlancers_2.md
Last active Aug 29, 2015

Embed
What would you like to do?

第8弾 週末ランサーズ「Infrastructure as Code」 ~ ハンズオン手順 ~

目次

  1. 事前準備 / Vagrant の基礎
  2. プロビジョニング (Chef)
  3. テスト (serverspec)
  4. 継続的インテグレーション (Jenkins)

プロビジョニング (Chef)

本来なら Ansible を題材にしたいところですが、Ansible の実行環境を整えるのは環境依存のところもあってちょっと手間がかかるので、今回は Chef をとりあげます。

プラグインのインストール

Chef を実行するために便利なプラグイン 'vagrant-omnibus' をインストールします。これは、VM 上に Chef の環境をインストールしてくれるものです。

$ vagrant plugin install vagrant-omnibus
$ vagrant plugin list
vagrant-omnibus (1.4.1)

※:2014/05/24 現在、nokogiri関連の問題で、うまくインストールできないかもしれません。その場合、下記を実行後再度インストールを試してください。

(sudo) gem install nokogiri -v '1.6.2.1'
export NOKOGIRI_USE_SYSTEM_LIBRARIES=true

プロビジョニングの設定

vagrant-omnibus, Chef Solo, IP アドレスの設定を追加します。

  • Vagrantfile
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "opscode_centos-6.5"

  config.vm.network "private_network", ip: "192.168.33.10"

  config.omnibus.chef_version = :latest

  config.vm.provision "chef_solo" do |chef|
    chef.cookbooks_path = "cookbooks"
    chef.add_recipe "httpd"
  end

end

プロビジョニングの実行

用意していた設定では、httpd をインストールするようになっています。プロビジョニングしてみましょう。

$ vagrant up

# Chef が実行されなかった場合、明示的に実行する
$ vagrant provision

Chef 実行時、下記のような警告メッセージが出るかもしれませんが、ひとまず無視して構いません。

==> default: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
==> default: SSL validation of HTTPS requests is disabled. HTTPS connections are still
==> default: encrypted, but chef is not able to detect forged replies or man in the middle
==> default: attacks.
==> default: 
==> default: To fix this issue add an entry like this to your configuration file:
==> default: 
==> default: ```
==> default:   # Verify all HTTPS connections (recommended)
==> default:   ssl_verify_mode :verify_peer
==> default: 
==> default:   # OR, Verify only connections to chef-server
==> default:   verify_api_cert true
==> default: ```
==> default: 
==> default: To check your SSL configuration, or troubleshoot errors, you can use the
==> default: `knife ssl check` command like so:
==> default: 
==> default: ```
==> default:   knife ssl check -c /tmp/vagrant-chef-3/solo.rb
==> default: ```
==> default: 
==> default: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 

プロビジョニング結果の確認

実際に httpd がインストールされたかを、VM に接続して確認します。

$ vagrant ssh

インストールはされているけど、まだ起動していない状態です。

$ sudo service httpd status
httpd is stopped

プロビジョニングの設定追加

インストールと合わせて、自動起動するように設定してみましょう。以下を追加してみてください。

  • cookbooks/httpd/recipes/default.rb
yum_package "httpd"

service "httpd" do
  supports :status => true, :restart => true, :reload => true
  action [ :enable, :start ]
end

再度プロビジョニングの実行

$ vagrant provision

実行後、割り当てておいた IP アドレスの http://192.168.33.10/ にアクセスしてみます。Apache のデフォルトページが見えていれば成功です。

VM の破棄後、再構築

いったん VM を破棄して、再度構築してみます。VM の初回起動時には、プロビジョニングも合わせて実行されます。

$ vagrant destroy
$ vagrant up

実行後 http://192.168.33.10/ に再度アクセスしてみると、上記と同様にデフォルトページが表示されると思います。

余談

Vagrant のプラグインは色々ありますが、saharaプラグインはオススメ。SNAPSHOT を取るためのコマンドを提供してくれるので、Vagrant 上での試行錯誤がやりやすくなります。

$ vagrant plugin install sahara
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.