サイズ: 152
コメント:
|
← 2015-02-10 03:33:35時点のリビジョン4 ⇥
サイズ: 8435
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 2: | 行 2: |
諸事情あってchef+vagrantの勉強をしているので備忘録代わりに色々書く. |
<<TableOfContents(2)>> 諸事情あってchef+vagrantの勉強をしているので備忘録代わりに色々書く(進行形).<<BR>> 前提としてvirtualBoxが入っていること. = インストール = == Vagrant == * Vagrantのインストール * http://vagrantup.com/downloads.html からrpmを落としてきて"rpm -Uvh package"する. * Pluginのインストール * ChefをProvisioningするプラグイン(必須)とAWS用のプラグイン,サンドボックス環境を入れる. {{{#!highlight console numbers=disable $ vagrant plugin install vagrant-omnibus $ vagrant plugin install vagrant-aws $ vagrant plugin install sahara }}} * "vagrant plugin list"で入れたプラグイン一覧を確認できる {{{#!highlight console numbers=disable $ 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のインストール * https://downloads.getchef.com/chef-dk/ からパッケージを落としてくる. * 例によって"rpm -Uvh package"で入れる. * knife-soloのインストール {{{#!highlight console numbers=disable $ chef gem install knife-solo }}} = 使い方 -Vagrant- = == Chef初期設定ファイルを生成 == "knife solo init {リポジトリ名}"で生成するが,"."を指定することによりカレントディレクトリに展開される. {{{#!highlight console numbers=disable $ knife solo init . }}} == Vagrant Boxファイルの準備 == 構築する仮想環境のベースとなる,仮想マシンを準備する.<<BR>>標準では https://vagrantcloud.com/discover/featured で配布されている.その他にも, * [[http://opscode.github.io/bento/|Bento Box]] * [[http://www.vagrantbox.es/|Vagrant ES]] でも配布されている.<<BR>> 標準で配布されているCentOS-6.5を取得するには,以下のようにして取得する. {{{#!highlight console numbers=disable $ vagrant box add chef/centos-6.5 }}} 取得したBoxファイルは次のコマンドで確認できる. {{{#!highlight console numbers=disable $ vagrant box list centos7_64 (virtualbox, 0) chef/centos-6.5 (virtualbox, 1.0.0) }}} ちなみに,他のページから取得する場合は, {{{#!highlight console numbers=disable $ vagrant box add http://opscode-vm-bento.s3.amazonaws.com/vagrant/vmware/opscode_centos-6.6_chef-provisionerless.box --name bento-centos66 }}} などとすればよい.<<BR>> 今回はCentOS7を別途取得して用いる. {{{#!highlight console numbers=disable $ vagrant box add https://f0fff3908f081cb6461b407be80daf97f07ac418.googledrive.com/host/0BwtuV7VyVTSkUG1PM3pCeDJ4dVE/centos7.box --name centos7_64 }}} == Vagrant起動用ファイルの準備 == 作業位置は先ほど生成した初期設定ファイルのある場所である.下記の場所にいればよい. {{{#!highlight console numbers=disable $ ls Berksfile cookbooks environments roles Berksfile.lock data_bags nodes site-cookbooks }}} ここで取得したBoxのVagrantfileを生成する.コマンドは"vagrant init <name>"となる.<<BR>> 実行後"Vagrantfile"ファイルが生成されている. {{{#!highlight console numbers=disable $ vagrant init centos7_64 $ ls Berksfile Memo cookbooks environments roles Berksfile.lock Vagrantfile data_bags nodes site-cookbooks }}} このVagrantfileを編集する.ここで仮想マシンへ割り当てるメモリ量やコア数,ネットワークなんかも一緒に設定する. {{{#!highlight console # -*- mode: ruby -*- Vagrant.configure(2) do |config| config.vm.box = "centos7_64" config.vm.network "private_network", ip: "192.168.33.10" config.vm.provider :virtualbox do |vb| vb.gui = false vb.customize ["modifyvm", :id, "--memory", "2048", "--cpus", "4"] end end }}} == 仮想マシン(インスタンス)の起動 == 上記までの状態で,一応まっさらな状態のインスタンスが起動するはずである.インスタンスの起動は次のコマンドで行う. {{{#!highlight console numbers=disable $ vagrant up }}} == インスタンスへのSSHログイン == インスタンスへのSSHは次のコマンドを用いる.ユーザは自動でvagrantというユーザが割り当てられる. {{{#!highlight console numbers=disable $ vagrant ssh [vagrant@localhost ~]$ [vagrant@localhost ~]$ exit $ }}} === SSHの簡略化 === インスタンスへホスト名でSSHアクセスできるように,.ssh/configへ登録する.方法は簡単で,以下のようにするだけである.<<BR>> ここではホスト名を"test"とした. {{{#!highlight console numbers=disable $ vagrant ssh-config --host test >> ~/.ssh/config }}} == そのほかインスタンス操作 == インスタンスは以下のコマンドで停止,サスペンド,再開,インスタンスの削除が行える. {{{#!highlight console numbers=disable #停止 $ vagrant halt #サスペンド $ vagrant suspend #再開 $ vagrant resume #インスタンスの削除 $ vagrant destroy }}} = 使い方 -Chef- = == ゲストマシンへChefをインストール == knife-soloを用いてゲストマシンへChefをインストールする.コマンドは "knife solo prepare {ホスト名}" となる. {{{#!highlight console numbers=disable $ knife solo prepare test }}} == クックブックを作る == ここからゲストマシンに入れる各種パッケージなどをセットアップするためのクックブックを作る.各機能ごとに1つずつクックブックを作っていく.<<BR>> クックブックは自分で書いていくが,既存のクックブックをダウンロードして使用することもできる. === 既存のクックブックをダウンロードして使う === Berksfileを用いることで既存のクックブックを取得して使用することができる.ここではselinuxのレシピを取得する.<<BR>> 取得するクックブックはBerksfileを編集して指定する. {{{#!highlight console numbers=disable source "https://api.berkshelf.com" cookbook "selinux" }}} 後にもっとレシピをダウンロードしたい場合は,2行目以降へ同じように名称を指定していけばよい.<<BR>> 設定が終わり,クックブックをダウンロードするには"berks vendor {宛先ディレクトリ}"とコマンドを打つ. {{{#!highlight console numbers=disable $ berks vendor cookbooks }}} === 自分でクックブックを作る === クックブックの作成は基本こちらになるだろう.ここでは例としてapacheをセットアップするクックブックを作る.<<BR>> クックブックを作るコマンドは "knife cookbook create {クックブックの名前} {option} -o {出力先}" となる.自作のクックブックは基本的に"site-cookbooks"ディレクトリへ作っていく. {{{#!highlight console numbers=disable $ 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" である. {{{#!highlight console numbers=disable package "httpd" do action :install end service "httpd" do action [ :enable, :start ] end }}} == ノードを作る == クックブック,レシピを作っただけではゲストマシン(ノード)へ反映されない.反映させるためにはnodesディレクトリ内にあるjsonファイルを編集して指定する. {{{#!highlight console numbers=disable { "run_list": [ "recipe[apache]" ] } }}} == knife solo (cook)の実行 == |
目次
諸事情あってchef+vagrantの勉強をしているので備忘録代わりに色々書く(進行形).
前提としてvirtualBoxが入っていること.
インストール
Vagrant
- Vagrantのインストール
http://vagrantup.com/downloads.html からrpmを落としてきて"rpm -Uvh package"する.
- Pluginのインストール
- ChefをProvisioningするプラグイン(必須)とAWS用のプラグイン,サンドボックス環境を入れる.
$ vagrant plugin install vagrant-omnibus
$ vagrant plugin install vagrant-aws
$ vagrant plugin install sahara
- "vagrant plugin list"で入れたプラグイン一覧を確認できる
$ 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のインストール
https://downloads.getchef.com/chef-dk/ からパッケージを落としてくる.
- 例によって"rpm -Uvh package"で入れる.
- knife-soloのインストール
$ 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]"
]
}