aboutsummaryrefslogtreecommitdiff
path: root/dev/vagrant/bootstrap.sh
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 /dev/vagrant/bootstrap.sh
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 'dev/vagrant/bootstrap.sh')
-rw-r--r--dev/vagrant/bootstrap.sh154
1 files changed, 154 insertions, 0 deletions
diff --git a/dev/vagrant/bootstrap.sh b/dev/vagrant/bootstrap.sh
new file mode 100644
index 000000000..889942922
--- /dev/null
+++ b/dev/vagrant/bootstrap.sh
@@ -0,0 +1,154 @@
+#!/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