aboutsummaryrefslogtreecommitdiff
path: root/vagrant
diff options
context:
space:
mode:
authorSteven Dake <stdake@cisco.com>2015-10-07 23:18:40 -0700
committerSteven Dake <stdake@cisco.com>2015-10-07 23:47:00 -0700
commit3b92e8714fc9a2e10cdbd73e36c05c838ba55852 (patch)
treebb6fbc7be2f6bd8faf578b64454ba16272998392 /vagrant
parente4094152de209c1444b3ea26a4abcdf28e3d1fb2 (diff)
downloadkolla-3b92e8714fc9a2e10cdbd73e36c05c838ba55852.tar.gz
kolla-3b92e8714fc9a2e10cdbd73e36c05c838ba55852.zip
Move around the development environments
THe top level dev directory is now used to store the heat and vagrant development environments. backport: liberty TrivialFix Change-Id: Ib0922b90eacaa8518aee09cdeb46f4ac0437e015
Diffstat (limited to 'vagrant')
-rw-r--r--vagrant/Vagrantfile168
-rw-r--r--vagrant/bootstrap.sh154
2 files changed, 0 insertions, 322 deletions
diff --git a/vagrant/Vagrantfile b/vagrant/Vagrantfile
deleted file mode 100644
index c2c1d7f68..000000000
--- a/vagrant/Vagrantfile
+++ /dev/null
@@ -1,168 +0,0 @@
-# -*- mode: ruby -*-
-# vi: set ft=ruby :
-
-require "ipaddr"
-
-# Either libvirt or virtualbox
-PROVIDER = "libvirt"
-
-PROVIDER_DEFAULTS = {
- libvirt: {
- base_image: "centos/7",
- bridge_interface: "virbr0",
- vagrant_shared_folder: "/home/vagrant/sync",
- sync_method: "nfs",
- },
- virtualbox: {
- base_image: "puppetlabs/centos-7.0-64-puppet",
- bridge_interface: "wlp3s0b1",
- vagrant_shared_folder: "/vagrant",
- sync_method: "virtualbox",
- },
-}
-
-# Whether to do Multi-node or All-in-One deployment
-MULTINODE=false
-
-# The following is only used when deploying in Multi-nodes
-NUMBER_OF_CONTROL_NODES=3
-NUMBER_OF_COMPUTE_NODES=1
-NUMBER_OF_STORAGE_NODES=1
-NUMBER_OF_NETWORK_NODES=1
-
-# Configure a new SSH key and config so the operator is able to connect with
-# the other cluster nodes.
-unless File.file?("./vagrantkey")
- system("ssh-keygen -f ./vagrantkey -N '' -C this-is-vagrant")
-end
-
-def get_default(setting)
- PROVIDER_DEFAULTS[PROVIDER.to_sym][setting]
-end
-
-Vagrant.configure(2) do |config|
- config.vm.box = get_default(:base_image)
-
- # Next to the hostonly NAT-network there is a host-only network with all
- # nodes attached. Plus, each node receives a 3rd adapter connected to the
- # outside public network.
- config.vm.network "private_network", type: "dhcp"
- config.vm.network "public_network", dev: get_default(:bridge_interface), mode: 'bridge', type: 'bridge'
-
- my_privatekey = File.read(File.join(File.dirname(__FILE__), "vagrantkey"))
- my_publickey = File.read(File.join(File.dirname(__FILE__), "vagrantkey.pub"))
-
- config.vm.provision :shell, inline: <<-EOS
- mkdir -p /root/.ssh
- echo '#{my_privatekey}' > /root/.ssh/id_rsa
- chmod 600 /root/.ssh/id_rsa
- echo '#{my_publickey}' > /root/.ssh/authorized_keys
- chmod 600 /root/.ssh/authorized_keys
- echo '#{my_publickey}' > /root/.ssh/id_rsa.pub
- chmod 644 /root/.ssh/id_rsa.pub
- mkdir -p /home/vagrant/.ssh
- echo '#{my_privatekey}' >> /home/vagrant/.ssh/id_rsa
- chmod 600 /home/vagrant/.ssh/*
- echo 'Host *' > ~vagrant/.ssh/config
- echo StrictHostKeyChecking no >> ~vagrant/.ssh/config
- chown -R vagrant: /home/vagrant/.ssh
- EOS
-
- config.hostmanager.enabled = true
- # Make sure hostmanager picks IP address of eth1
- config.hostmanager.ip_resolver = proc do |vm, resolving_vm|
- case PROVIDER
- when "libvirt"
- if vm.name
- `virsh -c qemu:///system net-dhcp-leases vagrant-private-dhcp | awk -F'[ /]+' '/#{vm.name} / {print $6}'`.chop
- end
- when "virtualbox"
- if vm.id
- `VBoxManage guestproperty get #{vm.id} "/VirtualBox/GuestInfo/Net/1/V4/IP"`.split()[1]
- end
- end
- end
-
- # 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 #{MULTINODE ? 'multinode' : 'aio'}"
- admin.vm.synced_folder "..", "/home/vagrant/kolla", create:"True", type: get_default(:sync_method)
- admin.vm.synced_folder "storage/operator/", "/data/host", create:"True", type: get_default(:sync_method)
- admin.vm.synced_folder "storage/shared/", "/data/shared", create:"True", type: get_default(:sync_method)
- admin.vm.synced_folder ".", get_default(:vagrant_shared_folder), disabled: true
- admin.vm.provider PROVIDER do |vm|
- vm.memory = MULTINODE ? 1024 : 4096
- if PROVIDER == 'libvirt'
- # This only works with libvirt provider.
- # We should be able to do something similar for virtualbox
- # http://askubuntu.com/questions/317338/how-can-i-increase-disk-size-on-a-vagrant-vm
- vm.machine_virtual_size = 40
- end
- end
- admin.hostmanager.aliases = "operator"
- end
-
- if MULTINODE
- # Build compute nodes
- (1..NUMBER_OF_COMPUTE_NODES).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", type: get_default(:sync_method)
- compute.vm.synced_folder "storage/shared/", "/data/shared", create:"True", type: get_default(:sync_method)
- compute.vm.synced_folder ".", get_default(:vagrant_shared_folder), disabled: true
- compute.vm.provider PROVIDER do |vm|
- vm.memory = 1024
- end
- compute.hostmanager.aliases = "compute0#{i}"
- end
- end
-
- # Build storage nodes
- (1..NUMBER_OF_STORAGE_NODES).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", type: get_default(:sync_method)
- storage.vm.synced_folder "storage/shared/", "/data/shared", create:"True", type: get_default(:sync_method)
- storage.vm.synced_folder ".", get_default(:vagrant_shared_folder), disabled: true
- storage.vm.provider PROVIDER do |vm|
- vm.memory = 1024
- end
- storage.hostmanager.aliases = "storage0#{i}"
- end
- end
-
- # Build network nodes
- (1..NUMBER_OF_NETWORK_NODES).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", type: get_default(:sync_method)
- network.vm.synced_folder "storage/shared/", "/data/shared", create:"True", type: get_default(:sync_method)
- network.vm.synced_folder ".", get_default(:vagrant_shared_folder), disabled: true
- network.vm.provider PROVIDER do |vm|
- vm.memory = 1024
- end
- network.hostmanager.aliases = "network0#{i}"
- end
- end
-
- # Build control nodes
- (1..NUMBER_OF_CONTROL_NODES).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", type: get_default(:sync_method)
- control.vm.synced_folder "storage/shared/", "/data/shared", create:"True", type: get_default(:sync_method)
- control.vm.synced_folder ".", get_default(:vagrant_shared_folder), disabled: true
- control.vm.provider PROVIDER do |vm|
- vm.memory = 2048
- end
- control.hostmanager.aliases = "control0#{i}"
- end
- end
- end
-
-end
diff --git a/vagrant/bootstrap.sh b/vagrant/bootstrap.sh
deleted file mode 100644
index 889942922..000000000
--- a/vagrant/bootstrap.sh
+++ /dev/null
@@ -1,154 +0,0 @@
-#!/usr/bin/env bash
-#
-# Bootstrap script to configure all nodes.
-#
-
-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 prep_work {
- systemctl stop firewalld
- systemctl disable firewalld
-
- # This removes the fqdn from /etc/hosts's 127.0.0.1. This name.local will
- # resolve to the public IP instead of localhost.
- sed -i -r "s/^(127\.0\.0\.1\s+)(.*) `hostname` (.+)/\1 \3/" /etc/hosts
-
- yum install -y http://mirror.nl.leaseweb.net/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
- yum install -y MySQL-python vim-enhanced python-pip python-devel gcc openssl-devel libffi-devel libxml2-devel libxslt-devel && yum clean all
- pip install --upgrade docker-py
-}
-
-# Install and configure a quick&dirty docker daemon.
-function install_docker {
- # Allow for an externally supplied docker binary.
- if [ -f "/data/docker" ]; then
- cp /vagrant/docker /usr/bin/docker
- chmod +x /usr/bin/docker
- else
- cat >/etc/yum.repos.d/docker.repo <<-EOF
-[dockerrepo]
-name=Docker Repository
-baseurl=https://yum.dockerproject.org/repo/main/centos/7
-enabled=1
-gpgcheck=1
-gpgkey=https://yum.dockerproject.org/gpg
-EOF
- # Also upgrade device-mapper here because of:
- # https://github.com/docker/docker/issues/12108
- yum install -y docker-engine device-mapper
-
- # 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 ${REGISTRY} --registry-mirror=http://${REGISTRY}," /usr/lib/systemd/system/docker.service
-
- systemctl daemon-reload
- systemctl enable docker
- systemctl start docker
- fi
-
- usermod -aG docker vagrant
-}
-
-function resize_partition {
- fdisk /dev/vda <<EOF
-n
-p
-
-
-t
-
-8e
-w
-EOF
- partprobe
- pvcreate /dev/vda4
- vgextend VolGroup00 /dev/vda4
- lvextend /dev/VolGroup00/LogVol00 /dev/vda4
- resize2fs /dev/VolGroup00/LogVol00
-}
-
-function configure_kolla {
- # Use local docker registry
- sed -i -r "s,^[# ]*namespace.+$,namespace = ${REGISTRY}/lokolla," /etc/kolla/kolla-build.conf
- sed -i -r "s,^[# ]*docker_registry:.+$,docker_registry: \"${REGISTRY}\"," /etc/kolla/globals.yml
- sed -i -r "s,^[# ]*docker_namespace:.+$,docker_namespace: \"lokolla\"," /etc/kolla/globals.yml
- sed -i -r "s,^[# ]*docker_insecure_registry:.+$,docker_insecure_registry: \"True\"," /etc/kolla/globals.yml
- # Set network interfaces
- sed -i -r "s,^[# ]*network_interface:.+$,network_interface: \"eth1\"," /etc/kolla/globals.yml
- sed -i -r "s,^[# ]*neutron_external_interface:.+$,neutron_external_interface: \"eth2\"," /etc/kolla/globals.yml
-}
-
-# Configure the operator node and install some additional packages.
-function configure_operator {
- yum install -y git mariadb && yum clean all
- pip install --upgrade ansible python-openstackclient
-
- pip install ~vagrant/kolla
-
- # Note: this trickery requires a patched docker binary.
- if [ "$http_proxy" = "" ]; then
- su - vagrant sh -c "echo BUILDFLAGS=\\\"--build-env=http_proxy=$http_proxy --build-env=https_proxy=$https_proxy\\\" > ~/kolla/.buildconf"
- fi
-
- cp -r ~vagrant/kolla/etc/kolla/ /etc/kolla
- mkdir -p /usr/share/kolla
- chown -R vagrant: /etc/kolla /usr/share/kolla
-
- configure_kolla
-
- # Make sure Ansible uses scp.
- cat > ~vagrant/.ansible.cfg <<EOF
-[defaults]
-forks=100
-
-[ssh_connection]
-scp_if_ssh=True
-EOF
- chown vagrant: ~vagrant/.ansible.cfg
-
- # The openrc file.
- cat > ~vagrant/openrc <<EOF
-export OS_AUTH_URL="http://${SUPPORT_NODE}:35357/v2.0"
-export OS_USERNAME=admin
-export OS_PASSWORD=password
-export OS_TENANT_NAME=admin
-export OS_VOLUME_API_VERSION=2
-EOF
- chown vagrant: ~vagrant/openrc
-
-
- # Launch a local registry (and mirror) to speed up pulling images.
- # 0.9.1 is actually the _latest_ tag.
- if [[ ! $(docker ps -a -q -f name=registry) ]]; then
- docker run -d \
- --name registry \
- --restart=always \
- -p $REGISTRY_PORT:5000 \
- -e STANDALONE=True \
- -e MIRROR_SOURCE=https://registry-1.docker.io \
- -e MIRROR_SOURCE_INDEX=https://index.docker.io \
- -e STORAGE_PATH=/var/lib/registry \
- -v /data/host/registry-storage:/var/lib/registry \
- registry:0.9.1
- fi
-}
-
-prep_work
-install_docker
-
-if [ "$1" = "operator" ]; then
- resize_partition
- configure_operator
-fi