Vagrantfileでinline provisionerを試す

表題の通り。provisionerにはshellスクリプトを書いて別ファイルにしたり、Ansibleでplaybookを書いたりすることができるが、ほんのちょっとしたスクリプトで可能なことであればinlineでOKだろう、ということで試してみた。

■ 環境

  • Vagrant 1.7.4

■ VM構成

1つのVagrantfileで2台のVMを起動させる。2台共に同じスクリプトを実行させて、とりあえず同じ状態の2台を構築させる。用意したVagrantfileは下記の通り。

$ cat Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

script = <<SCRIPT
  curl http://ftp.meisei-u.ac.jp/mirror/apache/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz 2>/dev/null | tar zx -C /opt
  mv /opt/zookeeper-3.4.6/conf/zoo_sample.cfg /opt/zookeeper-3.4.6/conf/zoo.cfg
  chown -R vagrant:vagrant /opt/zookeeper-3.4.6
SCRIPT

Vagrant.configure(2) do |config|

  config.vm.box = "chef/centos-6.6"

  config.vm.define "zoo1" do |node|
    node.vm.hostname = "zoo1"
    node.vm.network "private_network", ip: "192.168.33.101"
  end

  config.vm.define "zoo2" do |node|
    node.vm.hostname = "zoo2"
    node.vm.network "private_network", ip: "192.168.33.102"
  end

  config.vm.provision "shell", inline: script
end
$

実行するスクリプトの内容は見たままである。ZooKeeper-3.4.6のバイナリをダウンロードし展開、設定ファイルのサンプルを名前変更して、ディレクトリのオーナー・グループを変更しているだけである。

ちなみに以前までは固定IPを設定せずにどうにかならないか…と四苦八苦していたのだが、プラグイン等で実現させる事がほとんどのようなので一旦諦めた。”Avahi“等を使えないかと試していたのだが…。わざわざ他の人にも同じプラグインを導入してもらって、というのは面倒なので、固定IPを振ってVirtualBoxのネットワーク設定が一つ増えるかもしれない程度で済むのであれば、そちらを選択したまでである。

上記のVagrantfileを実行したところ、zoo1/zoo2共にZooKeeperがインストールされている事を確認した。”define“の外に書けば、共通して反映してくれるようだ。個別の設定等は”define“の中に書けば良いのであろう。スクリプトの実行順序が気になるが、共通の箇所を先に実行したければ、”define”の中に移して2台共に同じ記述をしなければならないのかもしれない。次回試してみる

以上。

■ 関連

コメントを残す

メールアドレスが公開されることはありません。

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください