LoginSignup
16

More than 5 years have passed since last update.

Knife-ZeroとVagrant(単品VM)

Last updated at Posted at 2015-06-18

Knife-Zeroを試してみようとして、Vagrantでconverge(chef_client)を挫折するのをよく見るので、手順を追ってみた。

追記: knife-zero 1.8でbootstrap時のattributeを自動追加するように変更した。

素のVagrant VM(VBox)を作成する。

とりあえず何も設定しないでVMを起動してみることにする。

Vagrant.configure(2) do |config|
  config.vm.box = "opscode-ubuntu-14.04"
end

up。

$ vagrant up
Bringing machine 'default' up with 'virtualbox' provider...
==> default: Importing base box 'opscode-ubuntu-14.04'...
....


 SSH address: 127.0.0.1:2201

...

途中でSSHの接続情報出てくるよね。後でも取れるけど。

knife zero bootstrapする。

さっきのSSH情報でBootstrapはできる。

$ knife zero bootstrap 127.0.0.1 --ssh-port 2201 --ssh-user vagrant --node-name test -i ./.vagrant/machines/default/virtualbox/private_key --sudo

Doing old-style registration with the validation key at ...
Delete your validation key in order to use your user credentials instead

Connecting to 127.0.0.1
127.0.0.1 Installing Chef Client...
127.0.0.1 --2015-06-18 09:25:51--  https://www.opscode.com/chef/install.sh
127.0.0.1 Resolving www.opscode.com (www.opscode.com)... 166.78.227.233
127.0.0.1 Connecting to www.opscode.com (www.opscode.com)|166.78.227.233|:443... connected.
127.0.0.1 HTTP request sent, awaiting response... 200 OK
127.0.0.1 Length: 18736 (18K) [application/x-sh]
127.0.0.1 Saving to: ‘STDOUT’
127.0.0.1 
100%[======================================>] 18,736      --.-K/s   in 0.003s  
127.0.0.1 
127.0.0.1 2015-06-18 09:25:58 (6.14 MB/s) - written to stdout [18736/18736]
127.0.0.1 
127.0.0.1 Downloading Chef 12 for ubuntu...

...

127.0.0.1 Converging 0 resources
127.0.0.1 
127.0.0.1 Running handlers:
127.0.0.1 Running handlers complete
127.0.0.1 Chef Client finished, 0/0 resources updated in 6.751803888 seconds

うむ、nodes/test.jsonがつくられる。

Nodeで自動取得したIPアドレス(10.0.〜とか)とBootstrapで使用(SSH接続できる先)したIPアドレス(127.0.0.1)が違う

たいていここで詰まる。
NWが少し入り組んだ環境ではゲートウェイに繋がるNICとSSHの接続に使うIPアドレスが異なることもあるので、knife-zeroではbootstrap時に仕込みを入れることにした。

nodes/test.jsonを見ると、Bootstrap時に使用した接続名がnodeのattributeとして保持されている。

nodes/test.json
{
  "name": "test",
  "normal": {
    "knife_zero": {
      "host": "127.0.0.1"
    },
    "tags": [

    ]
  },
  "automatic": {

-- 以下省略

接続用のIPを--attributeで渡してconverge

保持された接続先を指定するには、--attribute knife_zero.hostを渡してconverge(chef_client)でOK。

$ knife zero converge name:test --attribute knife_zero.host --ssh-port 2201 --ssh-user vagrant  -i ./.vagrant/machines/default/virtualbox/private_key
127.0.0.1 Starting Chef Client, version 12.3.0
127.0.0.1 resolving cookbooks for run list: []
127.0.0.1 Synchronizing Cookbooks:
127.0.0.1 Compiling Cookbooks...
127.0.0.1 [2015-06-18T09:33:49+00:00] WARN: Node test has an empty run list.
127.0.0.1 Converging 0 resources
127.0.0.1 
127.0.0.1 Running handlers:
127.0.0.1 Running handlers complete
127.0.0.1 Chef Client finished, 0/0 resources updated in 6.403417422 seconds

これはknife.rbknife[:ssh_attribute] = 'knife_zero.host'として省略もできます。
Vagrantでknife-zeroを"試してみるだけ"ならこれで十分。


複数のVMをつかう場合や、private_network/hostonly_networkを使うならREADMEに説明を書いています。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16