diff options
| author | Steven Dake <stdake@cisco.com> | 2015-10-07 23:18:40 -0700 |
|---|---|---|
| committer | Steven Dake <stdake@cisco.com> | 2015-10-07 23:47:00 -0700 |
| commit | 3b92e8714fc9a2e10cdbd73e36c05c838ba55852 (patch) | |
| tree | bb6fbc7be2f6bd8faf578b64454ba16272998392 /vagrant | |
| parent | e4094152de209c1444b3ea26a4abcdf28e3d1fb2 (diff) | |
| download | kolla-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/Vagrantfile | 168 | ||||
| -rw-r--r-- | vagrant/bootstrap.sh | 154 |
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 |
