$node_script = <<SCRIPT
echo I am provisioning...
if [ -z "$(grep puppet.mon-entreprise.com /etc/hosts)" ]; then
  echo "192.168.3.2 puppet.mon-entreprise.com puppet" >> /etc/hosts;
fi
if [ -z "$(dpkg -l | grep puppetlabs-release)" ]; then
  wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb -O /tmp/puppetlabs-release-precise.deb
  dpkg -i /tmp/puppetlabs-release-precise.deb
fi
apt-get -y update
apt-get -y install puppet
if [ -z "$(grep 'environment = dev' /etc/puppet/puppet.conf)" ]; then
  echo "[agent]\nenvironment = dev" >> /etc/puppet/puppet.conf;
fi
puppet agent -t
SCRIPT

$master_script = <<SCRIPT
echo I am provisioning...
if [ -z "$(dpkg -l | grep puppetlabs-release)" ]; then
  wget http://apt.puppetlabs.com/puppetlabs-release-precise.deb -O /tmp/puppetlabs-release-precise.deb
  dpkg -i /tmp/puppetlabs-release-precise.deb
fi
apt-get -y update
apt-get -y install puppetmaster sqlite3 libsqlite3-ruby ruby-activerecord
if [ -z "$(grep *.mon-entreprise.com.com /etc/puppet/autosign.conf)" ]; then
  echo "*.mon-entreprise.com" >> /etc/puppet/autosign.conf;
  #/etc/init.d/puppetmaster restart
fi
if [ -z "$(grep 'storedconfigs = true' /etc/puppet/puppet.conf)" ]; then
  echo "modulepath = /srv/puppet/$environment/modules:/srv/puppet/common/modules
manifest = /srv/puppet/$environment/manifests/site.pp
storeconfigs = true
dbadapter = sqlite3
" >> /etc/puppet/puppet.conf;
fi
/etc/init.d/puppetmaster restart
SCRIPT

Vagrant.configure("2") do |config|
  config.vm.box = "precise32"
  config.vm.box_url = "http://files.vagrantup.com/precise32.box"
  config.vm.define "puppetmaster" do |puppetmaster|
    puppetmaster.vm.hostname = 'puppet.mon-entreprise.com'
    puppetmaster.vm.synced_folder "puppet", "/srv/puppet/dev"
    puppetmaster.vm.provision "shell", inline: $master_script
    puppetmaster.vm.network "private_network", ip: "192.168.3.2"
  end

  config.vm.define "front" do |front|
    front.vm.hostname = 'front.mon-entreprise.com'
    front.vm.provision "shell", inline: $node_script
    front.vm.network "private_network", ip: "192.168.3.3"
    front.vm.network "forwarded_port", guest: 80, host: 8080
    front.vm.network "forwarded_port", guest: 443, host: 84433
  end
  config.vm.define "tomcat1" do |tomcat1|
    tomcat1.vm.hostname = 'tomcat1.mon-entreprise.com'
    tomcat1.vm.provision "shell", inline: $node_script
    tomcat1.vm.network "private_network", ip: "192.168.3.4"
    tomcat1.vm.network "forwarded_port", guest: 8080, host: 8081
  end
  config.vm.define "tomcat2" do |tomcat2|
    tomcat2.vm.hostname = 'tomcat2.mon-entreprise.com'
    tomcat2.vm.provision "shell", inline: $node_script
    tomcat2.vm.network "private_network", ip: "192.168.3.5"
    tomcat2.vm.network "forwarded_port", guest: 8080, host: 8082
  end
  config.vm.define "database" do |db|
    db.vm.hostname = 'database.mon-entreprise.com'
    db.vm.provision "shell", inline: $node_script
    db.vm.network "private_network", ip: "192.168.3.6"
  end
end
