mirror of
				https://github.com/apache/cloudstack.git
				synced 2025-10-26 08:42:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			207 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			207 lines
		
	
	
		
			7.6 KiB
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| # -*- mode: ruby -*-
 | |
| # Licensed to the Apache Software Foundation (ASF) under one
 | |
| # or more contributor license agreements.  See the NOTICE file
 | |
| # distributed with this work for additional information
 | |
| # regarding copyright ownership.  The ASF licenses this file
 | |
| # to you under the Apache License, Version 2.0 (the
 | |
| # "License"); you may not use this file except in compliance
 | |
| # with the License.  You may obtain a copy of the License at
 | |
| #
 | |
| #   http://www.apache.org/licenses/LICENSE-2.0
 | |
| #
 | |
| # Unless required by applicable law or agreed to in writing,
 | |
| # software distributed under the License is distributed on an
 | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 | |
| # KIND, either express or implied.  See the License for the
 | |
| # specific language governing permissions and limitations
 | |
| # under the License.
 | |
| #
 | |
| # vi: set ft=ruby :
 | |
| 
 | |
| # Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
 | |
| VAGRANTFILE_API_VERSION = "2"
 | |
| 
 | |
| $mysql_script = <<SCRIPT
 | |
| hostname db
 | |
| echo nameserver 8.8.8.8 > /etc/resolv.conf
 | |
| yum install mysql-server -y
 | |
| service mysqld start
 | |
| chkconfig mysqld on
 | |
| /usr/bin/mysqladmin -u root password 'cloud'
 | |
| mysql -uroot -pcloud -e "use mysql;GRANT ALL ON *.* to root@'%' IDENTIFIED BY 'cloud' WITH GRANT OPTION; FLUSH PRIVILEGES;"
 | |
| 
 | |
| mkdir -p /opt/storage/secondary
 | |
| echo "/opt/storage/secondary *(rw,no_root_squash)" > /etc/exports
 | |
| service nfs start
 | |
| 
 | |
| mkdir -p /opt/storage/secondary/template/tmpl/1/1
 | |
| cd /opt/storage/secondary/template/tmpl/1/1
 | |
| cp /vagrant/templates/tmpl/1/1/systemvmtemplate.vhd.bz2 .
 | |
| bzip2 -d systemvmtemplate.vhd.bz2
 | |
| mv systemvmtemplate.vhd edd5d5e5-b363-4926-a85b-d742ddd4a801.vhd
 | |
| 
 | |
| checksum=$(md5sum edd5d5e5-b363-4926-a85b-d742ddd4a801.vhd | cut -f 1 -d " ")
 | |
| cat > template.properties <<TEMPLATE
 | |
| filename=edd5d5e5-b363-4926-a85b-d742ddd4a801.vhd
 | |
| vhd=true
 | |
| id=1209
 | |
| vhd.filename=edd5d5e5-b363-4926-a85b-d742ddd4a801.vhd
 | |
| public=true
 | |
| uniquename=routing-1
 | |
| vhd.virtualsize=2097152000
 | |
| virtualsize=2097152000
 | |
| checksum=${checksum}
 | |
| hvm=false
 | |
| description=SystemVM Template (XenServer)
 | |
| vhd.size=2101252608
 | |
| size=2101252608
 | |
| TEMPLATE
 | |
| 
 | |
| mkdir -p /opt/storage/secondary/template/tmpl/1/5
 | |
| cd /opt/storage/secondary/template/tmpl/1/5
 | |
| cp /vagrant/templates/tmpl/1/5/ce5b212e-215a-3461-94fb-814a635b2215.vhd .
 | |
| cp /vagrant/templates/tmpl/1/5/template.properties .
 | |
| 
 | |
| SCRIPT
 | |
| 
 | |
| $xen_script = <<SCRIPT
 | |
| hostname xen
 | |
| xe pif-scan host-uuid=$(xe host-list --minimal)
 | |
| xe pif-plug uuid=$(xe pif-list device=eth1 --minimal)
 | |
| xe network-param-set name-label=xenbr0 uuid=$(xe network-list bridge=xenbr0 --minimal)
 | |
| xe network-param-set name-label=xenbr1 uuid=$(xe network-list bridge=xenbr1 --minimal)
 | |
| 
 | |
| xe pif-reconfigure-ip mode=static uuid=$(xe pif-list device=eth1 --minimal)  IP=192.168.56.234 netmask=255.255.255.0
 | |
| xe host-management-reconfigure pif-uuid=$(xe pif-list device=eth1 --minimal)
 | |
| 
 | |
| SCRIPT
 | |
| 
 | |
| Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
 | |
|   # All Vagrant configuration is done here. The most common configuration
 | |
|   # options are documented and commented below. For a complete reference,
 | |
|   # please see the online documentation at vagrantup.com.
 | |
| 
 | |
|   # Every Vagrant virtual environment requires a box to build off of.
 | |
|   
 | |
|   config.vm.define "xen" do |xen|
 | |
|     xen.vm.box = "duffy/xenserver"
 | |
|     xen.vm.provision "shell", inline: $xen_script
 | |
|   end
 | |
| 
 | |
|   config.vm.define "db" do |db|
 | |
|     db.vm.box = "chef/centos-6.5"
 | |
|     db.vm.network "private_network", ip: "192.168.56.94"
 | |
|     db.vm.network "forwarded_port", guest: 3306, host: 3306
 | |
|     db.vm.provision "shell", inline: $mysql_script
 | |
| 
 | |
|   end
 | |
| 
 | |
|   # Disable automatic box update checking. If you disable this, then
 | |
|   # boxes will only be checked for updates when the user runs
 | |
|   # `vagrant box outdated`. This is not recommended.
 | |
|   # config.vm.box_check_update = false
 | |
| 
 | |
|   # Create a forwarded port mapping which allows access to a specific port
 | |
|   # within the machine from a port on the host machine. In the example below,
 | |
|   # accessing "localhost:8080" will access port 80 on the guest machine.
 | |
|   # config.vm.network "forwarded_port", guest: 80, host: 8080
 | |
| 
 | |
|   # Create a private network, which allows host-only access to the machine
 | |
|   # using a specific IP.
 | |
|   # config.vm.network "private_network", ip: "192.168.33.10"
 | |
| 
 | |
|   # Create a public network, which generally matched to bridged network.
 | |
|   # Bridged networks make the machine appear as another physical device on
 | |
|   # your network.
 | |
|   # config.vm.network "public_network"
 | |
| 
 | |
|   # If true, then any SSH connections made will enable agent forwarding.
 | |
|   # Default value: false
 | |
|   # config.ssh.forward_agent = true
 | |
| 
 | |
|   # Share an additional folder to the guest VM. The first argument is
 | |
|   # the path on the host to the actual folder. The second argument is
 | |
|   # the path on the guest to mount the folder. And the optional third
 | |
|   # argument is a set of non-required options.
 | |
|   # config.vm.synced_folder "../data", "/vagrant_data"
 | |
| 
 | |
|   # Provider-specific configuration so you can fine-tune various
 | |
|   # backing providers for Vagrant. These expose provider-specific options.
 | |
|   # Example for VirtualBox:
 | |
|   #
 | |
|   # config.vm.provider "virtualbox" do |vb|
 | |
|   #   # Don't boot with headless mode
 | |
|   #   vb.gui = true
 | |
|   #
 | |
|   #   # Use VBoxManage to customize the VM. For example to change memory:
 | |
|   #   vb.customize ["modifyvm", :id, "--memory", "1024"]
 | |
|   # end
 | |
|   #
 | |
|   # View the documentation for the provider you're using for more
 | |
|   # information on available options.
 | |
| 
 | |
|   # Enable provisioning with CFEngine. CFEngine Community packages are
 | |
|   # automatically installed. For example, configure the host as a
 | |
|   # policy server and optionally a policy file to run:
 | |
|   #
 | |
|   # config.vm.provision "cfengine" do |cf|
 | |
|   #   cf.am_policy_hub = true
 | |
|   #   # cf.run_file = "motd.cf"
 | |
|   # end
 | |
|   #
 | |
|   # You can also configure and bootstrap a client to an existing
 | |
|   # policy server:
 | |
|   #
 | |
|   # config.vm.provision "cfengine" do |cf|
 | |
|   #   cf.policy_server_address = "10.0.2.15"
 | |
|   # end
 | |
| 
 | |
|   # Enable provisioning with Puppet stand alone.  Puppet manifests
 | |
|   # are contained in a directory path relative to this Vagrantfile.
 | |
|   # You will need to create the manifests directory and a manifest in
 | |
|   # the file default.pp in the manifests_path directory.
 | |
|   #
 | |
|   # config.vm.provision "puppet" do |puppet|
 | |
|   #   puppet.manifests_path = "manifests"
 | |
|   #   puppet.manifest_file  = "site.pp"
 | |
|   # end
 | |
| 
 | |
|   # Enable provisioning with chef solo, specifying a cookbooks path, roles
 | |
|   # path, and data_bags path (all relative to this Vagrantfile), and adding
 | |
|   # some recipes and/or roles.
 | |
|   #
 | |
|   # config.vm.provision "chef_solo" do |chef|
 | |
|   #   chef.cookbooks_path = "../my-recipes/cookbooks"
 | |
|   #   chef.roles_path = "../my-recipes/roles"
 | |
|   #   chef.data_bags_path = "../my-recipes/data_bags"
 | |
|   #   chef.add_recipe "mysql"
 | |
|   #   chef.add_role "web"
 | |
|   #
 | |
|   #   # You may also specify custom JSON attributes:
 | |
|   #   chef.json = { mysql_password: "foo" }
 | |
|   # end
 | |
| 
 | |
|   # Enable provisioning with chef server, specifying the chef server URL,
 | |
|   # and the path to the validation key (relative to this Vagrantfile).
 | |
|   #
 | |
|   # The Opscode Platform uses HTTPS. Substitute your organization for
 | |
|   # ORGNAME in the URL and validation key.
 | |
|   #
 | |
|   # If you have your own Chef Server, use the appropriate URL, which may be
 | |
|   # HTTP instead of HTTPS depending on your configuration. Also change the
 | |
|   # validation key to validation.pem.
 | |
|   #
 | |
|   # config.vm.provision "chef_client" do |chef|
 | |
|   #   chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
 | |
|   #   chef.validation_key_path = "ORGNAME-validator.pem"
 | |
|   # end
 | |
|   #
 | |
|   # If you're using the Opscode platform, your validator client is
 | |
|   # ORGNAME-validator, replacing ORGNAME with your organization name.
 | |
|   #
 | |
|   # If you have your own Chef Server, the default validation client name is
 | |
|   # chef-validator, unless you changed the configuration.
 | |
|   #
 | |
|   #   chef.validation_client_name = "ORGNAME-validator"
 | |
| end
 |