2013-08-15 4 views
0

Je suis en train d'avoir ma configuration errante exécuter un script shell différent pour chaque machine dans mon environnement multi-machine. J'ai une définition pour smartphones et une pour centos, mais je veux exécuter une configuration différente de fournisseur de shell pour chacun, avant d'exécuter la même configuration de fournisseur chef-solo sur les deux.Vagrant: différents approvisionneur pour machines différentes

#!/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 

J'ai également essayé d'utiliser smartos.vm.provision au lieu de config, mais ont vu aucune différence.

Est-ce que quelqu'un a une idée comment je peux le faire?

Répondre

0

Vous étiez sur la bonne voie avec

J'ai aussi essayé d'utiliser smartos.vm.provision au lieu de config

Essayez ce simple 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 

Lorsque vous exécuter "vagabondage" et ssh dans une machine, p.ex. vagabonds ssh smartphones et cd à/opt, vous verrez que le fichier "foo" a été créé. Et quand vous ssh dans la machine à cents, vous voyez que le fichier "barre" est créé.

Questions connexes