summaryrefslogtreecommitdiff
path: root/contrib/vagrant/Vagrantfile
blob: b8192a9b3c12c778909bdf185b6ea7cb40e16229 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
VAGRANTFILE_API_VERSION = "2"
GITCONFIG = `cat $HOME/.gitconfig`

Vagrant.require_version ">= 1.5"

VM_RAM_SIZE = "8192"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.ssh.forward_agent = true

  config.vm.network "forwarded_port", guest: 5354, host: 5354, protocol: "tcp"
  config.vm.network "forwarded_port", guest: 5354, host: 5354, protocol: "udp"

  config.vm.provider "virtualbox" do |vb, override|
    vb.customize ["modifyvm", :id, "--memory", VM_RAM_SIZE]
    if not RUBY_PLATFORM.downcase.include?("mswin")
      vb.customize ["modifyvm", :id, "--cpus", `awk "/^processor/ {++n} END {print n}" /proc/cpuinfo 2> /dev/null || sh -c 'sysctl hw.logicalcpu 2> /dev/null || echo ": 2"' | awk \'{print \$2}\' `.chomp ]
    end
    vb.customize ["modifyvm", :id, "--nicpromisc3", "allow-all"]

    override.vm.synced_folder "../..", "/opt/stack/designate"

    if File.directory?("../../../python-designateclient")
      override.vm.synced_folder "../../../python-designateclient", "/opt/stack/python-designateclient"
    end

    if File.directory?("../../../designate-dashboard")
      override.vm.synced_folder "../../../designate-dashboard", "/opt/stack/designate-dashboard"
    end

    if File.directory?("../../../designate-tempest-plugin")
      override.vm.synced_folder "../../../designate-tempest-plugin", "/opt/stack/designate-tempest-plugin"
    end

    if File.directory?("../../../devstack")
      override.vm.synced_folder "../../../devstack", "/home/vagrant/devstack"
    end

    if File.directory?("../../../grenade")
      override.vm.synced_folder "../../../grenade", "/opt/stack/grenade"
    end

    if File.directory?("../../../tempest")
      override.vm.synced_folder "../../../tempest", "/opt/stack/tempest"
    end

    if File.directory?("../../../rally")
      override.vm.synced_folder "../../../rally", "/opt/stack/rally"
    end
  end

  config.vm.provider :libvirt do |lv, override|
    lv.graphics_ip = '0.0.0.0'
    lv.nested = true
    lv.memory = Integer(VM_RAM_SIZE)
    if not RUBY_PLATFORM.downcase.include?("mswin")
      lv.cpus = `awk "/^processor/ {++n} END {print n}" /proc/cpuinfo 2> /dev/null || sh -c 'sysctl hw.logicalcpu 2> /dev/null || echo ": 2"' | awk \'{print \$2}\' `.chomp
    end

    override.vm.synced_folder ".", "/vagrant", type: "nfs"
    override.vm.synced_folder "../..", "/opt/stack/designate", type: "nfs"

    if File.directory?("../../../python-designateclient")
      override.vm.synced_folder "../../../python-designateclient", "/opt/stack/python-designateclient", type: "nfs"
    end

    if File.directory?("../../../designate-dashboard")
      override.vm.synced_folder "../../../designate-dashboard", "/opt/stack/designate-dashboard", type: "nfs"
    end

    if File.directory?("../../../designate-tempest-plugin")
      override.vm.synced_folder "../../../designate-tempest-plugin", "/opt/stack/designate-tempest-plugin", type: "nfs"
    end

    if File.directory?("../../../grenade")
      override.vm.synced_folder "../../../grenade", "/opt/stack/grenade", type: "nfs"
    end

    if File.directory?("../../../devstack")
      override.vm.synced_folder "../../../devstack", "/home/vagrant/devstack", type: "nfs"
    end

    if File.directory?("../../../tempest")
      override.vm.synced_folder "../../../tempest", "/opt/stack/tempest", type: "nfs"
    end

    if File.directory?("../../../rally")
      override.vm.synced_folder "../../../rally", "/opt/stack/rally", type: "nfs"
    end
  end

  $script = <<SCRIPT
set -e

# Fixup permissions on /opt/stack/
sudo chown vagrant:vagrant /opt/stack/

# Copy over git config
cat << EOF > /home/vagrant/.gitconfig
#{GITCONFIG}
EOF

# Clone DevStack
if [ ! -d "/home/vagrant/devstack" ]; then
    git clone https://git.openstack.org/openstack-dev/devstack.git /home/vagrant/devstack
fi

if [ -d "/opt/stack/grenade" ]; then
    mkdir /opt/stack/plugins
    ln -s /opt/stack/designate /opt/stack/plugins/designate
fi

# Install Vagrant local.conf sample
cd /opt/stack/designate/contrib/vagrant

if [ ! -f "/home/vagrant/devstack/local.conf" ]; then
    cp local.conf /home/vagrant/devstack/local.conf
fi

# Link in any Rally Plugins
mkdir /home/vagrant/.rally
ln -s /opt/stack/designate/rally-scenarios/plugins /home/vagrant/.rally/plugins

SCRIPT

  config.vm.define "ubuntu-xenial", primary: true do |ubuntu|
    ubuntu.vm.box = "yk0/ubuntu-xenial"

    ubuntu.vm.network :private_network, ip: "192.168.27.100"

    ubuntu.vm.provision :shell, :privileged => true, :inline => "DEBIAN_FRONTEND=noninteractive apt-get update"
    ubuntu.vm.provision :shell, :privileged => true, :inline => "DEBIAN_FRONTEND=noninteractive apt-get install --yes git lvm2"

    ubuntu.vm.provision :shell, :privileged => false, :inline => $script
  end

  config.vm.define "centos-7", autostart: false do |centos|
    centos.vm.box = "centos/7"

    centos.vm.network :private_network, ip: "192.168.27.101"

    centos.vm.provision :shell, :privileged => true, :inline => "yum update -y vim-minimal" # RH Bug 1066983
    centos.vm.provision :shell, :privileged => true, :inline => "yum install -y git-core"

    centos.vm.provision :shell, :privileged => false, :inline => $script
  end
end