kolla-ansible/dev/vagrant/bootstrap.sh
Martin André 95517f01fc Use default disk image size for centos/7
Latest centos/7 image from atlas now comes with 40 GB disk size which
is equal to the virtual_size we specify in the Vagrantfile.  Libvirt
provider doesn't like it and produces an ugly stacktrace.

The new default value now sufficient run kolla properly and we can
remove the code that artificially increased the disk size.

Change-Id: I7a645543cfcc027b4a3e0d02d8e7f436d8410ec5
Backport: Liberty
Closes-Bug: #1511265
2015-11-02 01:46:19 +00:00

142 lines
4.8 KiB
Bash

#!/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
# Pin Docker version to 1.8.2 before including this change
# https://github.com/ansible/ansible-modules-core/pull/2258
# in some tagged version of Ansible.
yum install -y yum-plugin-versionlock
yum versionlock add docker-engine-1.8.2-1.el7.centos.*
# 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 configure_kolla {
# Use local docker registry
sed -i -r "s,^[# ]*namespace.+$,namespace = ${REGISTRY}/lokolla," /etc/kolla/kolla-build.conf
sed -i -r "s,^[# ]*push.+$,push = True," /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 tox
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
configure_operator
fi