Vagrant.configure(2) do |config| # Creates a salt master that we can use to test out different test and build # scenarios locally before we set up the "CD" system. config.vm.define 'master' do |vagrant| vagrant.vm.hostname = 'master' vagrant.vm.network :private_network, ip: '172.16.100.5' # Do not use a shared folder. We will fetch sources in other ways. # This allows us (eventually) to export the VM and move it around. vagrant.vm.synced_folder ".", "/vagrant", disabled: true # The salt master actually needs some RAM in order to transfer large files. vagrant.vm.box = 'ubuntu-14-04-x64-vmware' vagrant.vm.box_url = 'boxes/ubuntu-14-04-x64-vmware.box' vagrant.vm.provider 'vmware_fusion' do |v| v.gui = true v.vmx['memsize'] = '2048' v.vmx['numvcpus'] = '2' end vagrant.vm.provision :shell, path: "shell/install_jenkins.sh" vagrant.vm.provision :shell, path: "shell/install_rvm_jenkins.sh" vagrant.vm.provision :shell, path: "shell/install_build_dependencies.sh" vagrant.vm.provision :shell, path: "shell/install_nginx.sh" vagrant.vm.provision :shell, path: "shell/install_perforce-server.sh" end # The build environment expects to be managed by the 'master' VM already # configured. config.vm.define 'build-ubuntu12' do |vagrant| vagrant.vm.hostname = 'build-ubuntu12' vagrant.vm.box = 'ubuntu-12-04-x64-vmware' vagrant.vm.box_url = 'boxes/ubuntu-12-04-x64-vmware.box' vagrant.vm.network :private_network, ip: '172.16.100.10' # Do not use a shared folder. We will fetch sources in other ways. vagrant.vm.synced_folder ".", "/vagrant", disabled: true vagrant.vm.provider 'vmware_fusion' do |v| v.gui = true v.vmx['memsize'] = '4096' v.vmx['numvcpus'] = '4' end vagrant.vm.provision :shell, path: "shell/install_build_dependencies.sh" vagrant.vm.provision :shell, path: "shell/install_rvm.sh", args: "stable", privileged: false vagrant.vm.provision :shell, path: "shell/install_jdk.sh" vagrant.vm.provision :shell, path: "shell/create_ssh_key.sh", privileged: false vagrant.vm.provision :shell, path: "shell/set_omnibus_perms.sh" end config.vm.define 'build-ubuntu14' do |vagrant| vagrant.vm.hostname = 'build-ubuntu14' vagrant.vm.box = 'ubuntu-14-04-x64-vmware' vagrant.vm.box_url = 'boxes/ubuntu-14-04-x64-vmware.box' vagrant.vm.network :private_network, ip: '172.16.100.11' # Do not use a shared folder. We will fetch sources in other ways. vagrant.vm.synced_folder ".", "/vagrant", disabled: true vagrant.vm.provider 'vmware_fusion' do |v| v.gui = true v.vmx['memsize'] = '4096' v.vmx['numvcpus'] = '4' end vagrant.vm.provision :shell, path: "shell/install_build_dependencies.sh" vagrant.vm.provision :shell, path: "shell/install_rvm.sh", args: "stable", privileged: false vagrant.vm.provision :shell, path: "shell/install_jdk.sh" vagrant.vm.provision :shell, path: "shell/create_ssh_key.sh", privileged: false vagrant.vm.provision :shell, path: "shell/set_omnibus_perms.sh" end config.vm.define 'build-centos6' do |vagrant| vagrant.vm.hostname = 'build-centos6' vagrant.vm.box = 'centos-6-7-x64-vmware' vagrant.vm.box_url = 'boxes/centos-6-7-x64-vmware.box' vagrant.vm.network :private_network, ip: '172.16.100.12' # Do not use a shared folder. We will fetch sources in other ways. vagrant.vm.synced_folder ".", "/vagrant", disabled: true vagrant.vm.provider 'vmware_fusion' do |v| v.gui = true v.vmx['memsize'] = '4096' v.vmx['numvcpus'] = '4' end vagrant.vm.provision :shell, path: "shell/install_build_dependencies-centos.sh" vagrant.vm.provision :shell, path: "shell/install_rvm.sh", args: "stable", privileged: false vagrant.vm.provision :shell, path: "shell/install_jdk-centos.sh" vagrant.vm.provision :shell, path: "shell/create_ssh_key.sh", privileged: false vagrant.vm.provision :shell, path: "shell/set_omnibus_perms.sh" end config.vm.define 'test-ubuntu12' do |vagrant| vagrant.vm.hostname = 'test-ubuntu12' vagrant.vm.box = 'ubuntu-12-04-x64-vmware' vagrant.vm.box_url = 'boxes/ubuntu-12-04-x64-vmware.box' vagrant.vm.network :private_network, ip: '172.16.100.20' # Do not use a shared folder. We will fetch sources in other ways. vagrant.vm.synced_folder ".", "/vagrant", disabled: true vagrant.vm.provider 'vmware_fusion' do |v| v.gui = true v.vmx['memsize'] = '2096' v.vmx['numvcpus'] = '2' end vagrant.vm.provision :shell, path: "shell/update.sh" vagrant.vm.provision :shell, path: "shell/install_jdk.sh" vagrant.vm.provision :shell, path: "shell/create_ssh_key.sh", privileged: false end config.vm.define 'test-ubuntu14' do |vagrant| vagrant.vm.hostname = 'test-ubuntu14' vagrant.vm.box = 'ubuntu-14-04-x64-vmware' vagrant.vm.box_url = 'boxes/ubuntu-14-04-x64-vmware.box' vagrant.vm.network :private_network, ip: '172.16.100.21' # Do not use a shared folder. We will fetch sources in other ways. vagrant.vm.synced_folder ".", "/vagrant", disabled: true vagrant.vm.provider 'vmware_fusion' do |v| v.gui = true v.vmx['memsize'] = '2096' v.vmx['numvcpus'] = '2' end vagrant.vm.provision :shell, path: "shell/update.sh" vagrant.vm.provision :shell, path: "shell/install_jdk.sh" vagrant.vm.provision :shell, path: "shell/create_ssh_key.sh", privileged: false end config.vm.define 'test-centos6' do |vagrant| vagrant.vm.hostname = 'test-centos6' vagrant.vm.box = 'centos-6-7-x64-vmware' vagrant.vm.box_url = 'boxes/centos-6-7-x64-vmware.box' vagrant.vm.network :private_network, ip: '172.16.100.22' # Do not use a shared folder. We will fetch sources in other ways. vagrant.vm.synced_folder ".", "/vagrant", disabled: true vagrant.vm.provider 'vmware_fusion' do |v| v.gui = true v.vmx['memsize'] = '2096' v.vmx['numvcpus'] = '2' end vagrant.vm.provision :shell, inline: 'iptables -F' vagrant.vm.provision :shell, inline: 'yum update -y' vagrant.vm.provision :shell, path: "shell/install_jdk-centos.sh" vagrant.vm.provision :shell, path: "shell/create_ssh_key.sh", privileged: false end end
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 15688 | Doug Scheirer |
Populate -o //guest/perforce_software/helix-web-services/... //guest/doug_scheirer/helix-web-services/.... |
||
//guest/perforce_software/helix-web-services/main/infrastructure/Vagrantfile | |||||
#4 | 15685 | tjuricek |
Use GUIs for VMWare Fusion, and remove version string from installer file names. If we show the UI for VMs launched by Vagrant, we can easily just drag and drop into vSphere. Which works quickly, actually. We also do not want version strings in archived file names, since that makes it trickier to write scripts that just fetch these files and deploy them automatically. |
||
#3 | 15661 | tjuricek |
Add some basic email notification. Note: the 'P4' Jenkins plugin doesn't seem to alter the workflow environment. This means we don't really get access to the changelist we've synced. I'm investigating, this would be nice to have. |
||
#2 | 15634 | tjuricek |
Add rules for setting up and running Centos 6. There's a strange problem coming back around with package tests again, not everything's 100% |
||
#1 | 15623 | tjuricek |
Add infrastructure project. This project should allow any team to setup a CD environment locally using VMWare products. A 'build' workflow will run tests, generate installers, etc, on a Jenkins instance configured with necessary plugins. A later 'release' workflow will initially push successful runs into the 'build/' directory of the branch in the workshop. (A 'production release' will use that data and push it into internal infrastructure for package signing and hosting.) Documentation will be written. This is a large set of files, so I wanted to submit them where my connection to the workshop server is faster. |