Login
Immutable PageDiscussionInfoAttachments
thunder_lab/distribute

MMA

諸事情あってchef+vagrantの勉強をしているので備忘録代わりに色々書く(進行形).
前提としてvirtualBoxが入っていること.

インストール

Vagrant

$ vagrant plugin install vagrant-omnibus
$ vagrant plugin install vagrant-aws
$ vagrant plugin install sahara

$ vagrant plugin list
sahara (0.0.17)
vagrant-aws (0.6.0)
vagrant-omnibus (1.4.1)
vagrant-share (1.1.3, system)

Chef

Chef DKを入れることにより,ChefだけでなくBerkshellなども全部一緒に入る.

$ chef gem install knife-solo

使い方 -Vagrant-

Chef初期設定ファイルを生成

"knife solo init {リポジトリ名}"で生成するが,"."を指定することによりカレントディレクトリに展開される.

$ knife solo init .

Vagrant Boxファイルの準備

構築する仮想環境のベースとなる,仮想マシンを準備する.
標準では https://vagrantcloud.com/discover/featured で配布されている.その他にも,

でも配布されている.
標準で配布されているCentOS-6.5を取得するには,以下のようにして取得する.

$ vagrant box add chef/centos-6.5

取得したBoxファイルは次のコマンドで確認できる.

$ vagrant box list
centos7_64      (virtualbox, 0)
chef/centos-6.5 (virtualbox, 1.0.0)

ちなみに,他のページから取得する場合は,

$ vagrant box add http://opscode-vm-bento.s3.amazonaws.com/vagrant/vmware/opscode_centos-6.6_chef-provisionerless.box --name bento-centos66

などとすればよい.
今回はCentOS7を別途取得して用いる.

$ vagrant box add https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box --name centos7_64

Vagrant起動用ファイルの準備

作業位置は先ほど生成した初期設定ファイルのある場所である.下記の場所にいればよい.

$ ls
Berksfile       cookbooks  environments  roles
Berksfile.lock  data_bags  nodes         site-cookbooks

ここで取得したBoxのVagrantfileを生成する.コマンドは"vagrant init <name>"となる.
実行後"Vagrantfile"ファイルが生成されている.

$ vagrant init centos7_64
$ ls
Berksfile       Memo         cookbooks  environments  roles
Berksfile.lock  Vagrantfile  data_bags  nodes         site-cookbooks

このVagrantfileを編集する.ここで仮想マシンへ割り当てるメモリ量やコア数,ネットワークなんかも一緒に設定する.

   1 # -*- mode: ruby -*-
   2 
   3 Vagrant.configure(2) do |config|
   4 
   5   config.vm.box = "centos7_64"
   6   config.vm.network "private_network", ip: "192.168.33.10"
   7   config.vm.provider :virtualbox do |vb|
   8     vb.gui = false
   9     vb.customize ["modifyvm", :id,
  10                     "--memory", "2048",
  11                     "--cpus", "4"]
  12   end
  13 end
  14 

仮想マシン(インスタンス)の起動

上記までの状態で,一応まっさらな状態のインスタンスが起動するはずである.インスタンスの起動は次のコマンドで行う.

$ vagrant up

インスタンスへのSSHログイン

インスタンスへのSSHは次のコマンドを用いる.ユーザは自動でvagrantというユーザが割り当てられる.

$ vagrant ssh
[vagrant@localhost ~]$
[vagrant@localhost ~]$ exit
$ 

SSHの簡略化

インスタンスへホスト名でSSHアクセスできるように,.ssh/configへ登録する.方法は簡単で,以下のようにするだけである.
ここではホスト名を"test"とした.

$ vagrant ssh-config --host test >> ~/.ssh/config 

そのほかインスタンス操作

インスタンスは以下のコマンドで停止,サスペンド,再開,インスタンスの削除が行える.

#停止
$ vagrant halt

#サスペンド
$ vagrant suspend

#再開
$ vagrant resume

#インスタンスの削除
$ vagrant destroy

使い方 -Chef-

ゲストマシンへChefをインストール

knife-soloを用いてゲストマシンへChefをインストールする.コマンドは "knife solo prepare {ホスト名}" となる.

$ knife solo prepare test

クックブックを作る

ここからゲストマシンに入れる各種パッケージなどをセットアップするためのクックブックを作る.各機能ごとに1つずつクックブックを作っていく.
クックブックは自分で書いていくが,既存のクックブックをダウンロードして使用することもできる.

既存のクックブックをダウンロードして使う

Berksfileを用いることで既存のクックブックを取得して使用することができる.ここではselinuxのレシピを取得する.
取得するクックブックはBerksfileを編集して指定する.

source "https://api.berkshelf.com"
cookbook "selinux"

後にもっとレシピをダウンロードしたい場合は,2行目以降へ同じように名称を指定していけばよい.
設定が終わり,クックブックをダウンロードするには"berks vendor {宛先ディレクトリ}"とコマンドを打つ.

$ berks vendor cookbooks

自分でクックブックを作る

クックブックの作成は基本こちらになるだろう.ここでは例としてapacheをセットアップするクックブックを作る.
クックブックを作るコマンドは "knife cookbook create {クックブックの名前} {option} -o {出力先}" となる.自作のクックブックは基本的に"site-cookbooks"ディレクトリへ作っていく.

$ sudo knife cookbook create apache -o site-cookbooks
** Creating cookbook apache
** Creating README for cookbook: apache
** Creating CHANGELOG for cookbook: apache
** Creating metadata for cookbook: apache

レシピを作る

クックブックを作ったら次はレシピを作成する.先程に続いてapacheをインストールするレシピを書いていく. レシピの場所は "site-cookbooks/apache/recipes/default.rb" である.

package "httpd" do
  action :install
end

service "httpd" do
  action [ :enable, :start ]
end

ノードを作る

クックブック,レシピを作っただけではゲストマシン(ノード)へ反映されない.反映させるためにはnodesディレクトリ内にあるjsonファイルを編集して指定する.

{
  "run_list": [
    "recipe[apache]"
  ]
}

knife solo (cook)の実行

thunder_lab/distribute (last edited 2015-02-10 03:33:35 by thunder_lab)