diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile index d285099a4c..f22e0c0b0a 100644 --- a/vagrant/Vagrantfile +++ b/vagrant/Vagrantfile @@ -1,6 +1,9 @@ # -*- mode: ruby -*- # vi: set ft=ruby : +# Whether to do Multi-node or All-in-One deployment +MULTINODE=true + # Configure a new SSH key and config so the operator is able to connect with # the other cluster nodes. if not File.file?("./vagrantkey") @@ -47,80 +50,82 @@ Vagrant.configure(2) do |config| # The operator controls the deployment config.vm.define "operator" do |admin| admin.vm.hostname = "operator.local" - admin.vm.provision :shell, path: "bootstrap.sh", args: "operator" + admin.vm.provision :shell, path: "bootstrap.sh", args: "operator #{MULTINODE ? 'multinode' : 'aio'}" admin.vm.synced_folder "storage/operator/", "/data/host", create:"True" admin.vm.synced_folder "storage/shared/", "/data/shared", create:"True" admin.vm.synced_folder ".", "/vagrant", disabled: true admin.vm.provider "virtualbox" do |vb| - vb.memory = 1024 + vb.memory = MULTINODE ? 1024 : 4096 end admin.hostmanager.aliases = "operator" end - # Build compute nodes - (1..1).each do |i| - config.vm.define "compute0#{i}" do |compute| - compute.vm.hostname = "compute0#{i}.local" - compute.vm.provision :shell, path: "bootstrap.sh" - compute.vm.synced_folder "storage/compute/", "/data/host", create:"True" - compute.vm.synced_folder "storage/shared/", "/data/shared", create:"True" - compute.vm.synced_folder ".", "/vagrant", disabled: true - compute.vm.provider "virtualbox" do |vb| - vb.memory = 1024 + if MULTINODE + # Build compute nodes + (1..1).each do |i| + config.vm.define "compute0#{i}" do |compute| + compute.vm.hostname = "compute0#{i}.local" + compute.vm.provision :shell, path: "bootstrap.sh" + compute.vm.synced_folder "storage/compute/", "/data/host", create:"True" + compute.vm.synced_folder "storage/shared/", "/data/shared", create:"True" + compute.vm.synced_folder ".", "/vagrant", disabled: true + compute.vm.provider "virtualbox" do |vb| + vb.memory = 1024 + end + compute.hostmanager.aliases = "compute0#{i}" end - compute.hostmanager.aliases = "compute0#{i}" end - end - # Build storage nodes - (1..1).each do |i| - config.vm.define "storage0#{i}" do |storage| - storage.vm.hostname = "storage0#{i}.local" - storage.vm.provision :shell, path: "bootstrap.sh" - storage.vm.synced_folder "storage/storage/", "/data/host", create:"True" - storage.vm.synced_folder "storage/shared/", "/data/shared", create:"True" - storage.vm.synced_folder ".", "/vagrant", disabled: true - storage.vm.provider "virtualbox" do |vb| - vb.memory = 1024 + # Build storage nodes + (1..1).each do |i| + config.vm.define "storage0#{i}" do |storage| + storage.vm.hostname = "storage0#{i}.local" + storage.vm.provision :shell, path: "bootstrap.sh" + storage.vm.synced_folder "storage/storage/", "/data/host", create:"True" + storage.vm.synced_folder "storage/shared/", "/data/shared", create:"True" + storage.vm.synced_folder ".", "/vagrant", disabled: true + storage.vm.provider "virtualbox" do |vb| + vb.memory = 1024 + end + storage.hostmanager.aliases = "storage0#{i}" end - storage.hostmanager.aliases = "storage0#{i}" end - end - # Build network nodes - (1..1).each do |i| - config.vm.define "network0#{i}" do |network| - network.vm.hostname = "network0#{i}.local" - network.vm.provision :shell, path: "bootstrap.sh" - network.vm.synced_folder "storage/network/", "/data/host", create:"True" - network.vm.synced_folder "storage/shared/", "/data/shared", create:"True" - network.vm.synced_folder ".", "/vagrant", disabled: true - network.vm.provider "virtualbox" do |vb| - vb.memory = 1024 + # Build network nodes + (1..1).each do |i| + config.vm.define "network0#{i}" do |network| + network.vm.hostname = "network0#{i}.local" + network.vm.provision :shell, path: "bootstrap.sh" + network.vm.synced_folder "storage/network/", "/data/host", create:"True" + network.vm.synced_folder "storage/shared/", "/data/shared", create:"True" + network.vm.synced_folder ".", "/vagrant", disabled: true + network.vm.provider "virtualbox" do |vb| + vb.memory = 1024 + end + network.hostmanager.aliases = "network0#{i}" end - network.hostmanager.aliases = "network0#{i}" end - end - # Build control nodes - (1..3).each do |i| - config.vm.define "control0#{i}" do |control| - control.vm.hostname = "control0#{i}.local" - control.vm.provision :shell, path: "bootstrap.sh" - control.vm.synced_folder "storage/control/", "/data/host", create:"True" - control.vm.synced_folder "storage/shared/", "/data/shared", create:"True" - control.vm.synced_folder ".", "/vagrant", disabled: true - control.vm.provider "virtualbox" do |vb| - vb.memory = 2048 + # Build control nodes + (1..3).each do |i| + config.vm.define "control0#{i}" do |control| + control.vm.hostname = "control0#{i}.local" + control.vm.provision :shell, path: "bootstrap.sh" + control.vm.synced_folder "storage/control/", "/data/host", create:"True" + control.vm.synced_folder "storage/shared/", "/data/shared", create:"True" + control.vm.synced_folder ".", "/vagrant", disabled: true + control.vm.provider "virtualbox" do |vb| + vb.memory = 2048 + end + control.hostmanager.aliases = "control0#{i}" + + # TODO: Here we bind local port 8080 to Horizon on control01 only. + # TODO: Once we implement Horizon behind a VIP, this obviously needs to + # be changed. + #if i < 2 then + # config.vm.network "forwarded_port", guest: 80, host: 8080 + #end end - control.hostmanager.aliases = "control0#{i}" - - # TODO: Here we bind local port 8080 to Horizon on control01 only. - # TODO: Once we implement Horizon behind a VIP, this obviously needs to - # be changed. - #if i < 2 then - # config.vm.network "forwarded_port", guest: 80, host: 8080 - #end end end diff --git a/vagrant/bootstrap.sh b/vagrant/bootstrap.sh index c6cdd9efb1..17dd570591 100644 --- a/vagrant/bootstrap.sh +++ b/vagrant/bootstrap.sh @@ -6,8 +6,18 @@ export http_proxy= export https_proxy= +if [ $2 = 'aio' ]; then + # Run registry on port 4000 since it may collide with keystone when doing AIO + REGISTRY_PORT=4000 + SUPPORT_NODE=operator +else + REGISTRY_PORT=5000 + SUPPORT_NODE=support01 +fi +REGISTRY=operator.local:${REGISTRY_PORT} + # Install common packages and do some prepwork. -function prepwork { +function prep_work { systemctl stop firewalld systemctl disable firewalld @@ -21,7 +31,7 @@ function prepwork { } # Install and configure a quick&dirty docker daemon. -function installdocker { +function install_docker { # Allow for an externally supplied docker binary. if [ -f "/data/docker" ]; then cp /vagrant/docker /usr/bin/docker @@ -41,7 +51,7 @@ EOF # Despite it shipping with /etc/sysconfig/docker, Docker is not configured to # load it from it's service file. - sed -i -r 's,(ExecStart)=(.+),\1=/usr/bin/docker -d --insecure-registry operator.local:5000 --registry-mirror=http://operator.local:5000,' /usr/lib/systemd/system/docker.service + sed -i -r "s,(ExecStart)=(.+),\1=/usr/bin/docker -d --insecure-registry ${REGISTRY} --registry-mirror=http://${REGISTRY}," /usr/lib/systemd/system/docker.service systemctl daemon-reload systemctl enable docker @@ -52,7 +62,7 @@ EOF } # Configure the operator node and install some additional packages. -function configureoperator { +function configure_operator { yum install -y git mariadb && yum clean all pip install --upgrade ansible python-openstackclient @@ -81,7 +91,7 @@ EOF # The openrc file. cat > ~vagrant/openrc < ~vagrant/tag-and-push.sh <