0

マルチマシン環境で、vagrant 構成でマシンごとに異なるシェル スクリプトを実行しようとしています。

私は smartos の定義と centos の定義を持っていますが、両方で同じchef-soloプロバイダー構成を実行する前に、それぞれに異なるシェルプロバイダー構成を実行したいと考えています。

#!/usr/bin/env ruby

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

$smartos_script = <<-SHELL
echo "http://10.40.95.5" > /opt/local/etc/pkgin/repositories.conf
rm -rf /var/db/pkgin && pkgin -y update
SHELL

$centos_script = <<-SHELL
touch /opt/my_file
SHELL

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.berkshelf.enabled = true
  config.ssh.forward_agent = true

  config.vm.define :smartos do |smartos|

    smartos.vm.box = "smartos"
    smartos.vm.box_url = 'http://dlc-int.openindiana.org/aszeszo/vagrant/smartos-base1310-64-virtualbox-20130806.box'
    smartos.vm.guest = :solaris

    config.vm.provision :shell do |shell|
      shell.inline = $smartos_script
    end

  end

  config.vm.define :centos do |centos|

    centos.vm.box = "centos"
    centos.vm.box_url = 'http://dlc-int.openindiana.org/aszeszo/vagrant/smartos-base1310-64-virtualbox-20130806.box'

    config.vm.provision :shell do |shell|
      shell.inline = $centos_script
    end

  end

  config.vm.provision :chef_solo do |chef|
    chef.add_recipe 'test'
  end

end

smartos.vm.provisionconfig の代わりに使用してみましたが、違いは見られませんでした。

誰も私がこれを行う方法を知っていますか?

4

1 に答える 1

0

あなたは正しい軌道に乗っていました

config の代わりに smartos.vm.provision を使用してみました

この単純な Vagrantfile を試してください

$smartos_script = <<-SHELL
touch /opt/foo
SHELL

$centos_script = <<-SHELL
touch /opt/bar
SHELL

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|

  config.vm.define :smartos do |smartos|

    smartos.vm.box = "smartos"
    smartos.vm.box_url = 'http://dlc-int.openindiana.org/aszeszo/vagrant/smartos-base1310-64-virtualbox-20130806.box'


    smartos.vm.provision :shell do |shell|
      shell.inline = $smartos_script
    end

  end

  config.vm.define :centos do |centos|

    centos.vm.box = "centos"
    centos.vm.box_url = 'http://dlc-int.openindiana.org/aszeszo/vagrant/smartos-base1310-64-virtualbox-20130806.box'

    centos.vm.provision :shell do |shell|
      shell.inline = $centos_script
    end

  end

end

「vagrant up」を実行してマシンに ssh を実行すると、たとえば vagrant ssh smartos で /opt に cd すると、ファイル「foo」が作成されていることがわかります。cents マシンに ssh すると、ファイル「bar」が作成されていることがわかります。

于 2014-01-28T22:54:43.720 に答える