ログイン
編集不可のページディスカッション情報添付ファイル
"thunder_lab/distribute"の差分

MMA
3と4のリビジョン間の差分
2015-02-09 21:21:18時点のリビジョン3
サイズ: 2719
編集者: thunder_lab
コメント:
2015-02-10 03:33:35時点のリビジョン4
サイズ: 8435
編集者: thunder_lab
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 4: 行 4:
諸事情あってchef+vagrantの勉強をしているので備忘録代わりに色々書く(進行形).
前提としてVirtualBoxが入っていること.
諸事情あってchef+vagrantの勉強をしているので備忘録代わりに色々書く(進行形).<<BR>>
前提としてvirtualBoxが入っていること.
行 29: 行 29:
行 41: 行 42:
= 使い方 = = 使い方 -Vagrant- =
行 49: 行 50:
構築する仮想環境のベースとなる,仮想マシンを準備する.<br> 標準では https://vagrantcloud.com/discover/featured で配布されている.その他にも,

 * [[Bento Box|http://opscode.github.io/bento/]]
 * [[Vagrant ES|http://www.vagrantbox.es/]]

でも配布されている.
ここでは
標準で配布されているCentOS-6.5を用いることする.以下のようにして取得する.
構築する仮想環境のベースとなる,仮想マシンを準備する.<<BR>>標準では https://vagrantcloud.com/discover/featured で配布されている.その他にも,

 * [[http://opscode.github.io/bento/|Bento Box]]
 * [[http://www.vagrantbox.es/|Vagrant ES]]

でも配布されている.<<BR>>
標準で配布されているCentOS-6.5を取得するは,以下のようにして取得する.
行 68: 行 69:
行 72: 行 72:
などとすればよい.

...

などとすればよい.<<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のインストール
  • 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のインストール
  • 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]"
  ]
}

knife solo (cook)の実行

thunder_lab/distribute (最終更新日時 2015-02-10 03:33:35 更新者 thunder_lab)