From aaa38eaf5b9d36d59b4e6eb72fdd11764d19cee9 Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Date: Sat, 20 Feb 2016 15:48:31 +0100 Subject: [PATCH] Fix vagrant bootstrapping for ubuntu The ubuntu-bootstrap.sh script used by vagrant to provision ubuntu boxes was lacking many of the features of centos-bootstrap.sh. For instance, ubuntu-bootstrap.sh did not install kolla, so the kolla-build executable was not available after initial provisioning. This patch adapts the bootstrap script to match the centos bootstrap script as closely as possible. Change-Id: I6cdacb993a9b6856912ea7cfb73a28f3867f472a Closes-Bug: #1547114 --- dev/vagrant/centos-bootstrap.sh | 7 +- dev/vagrant/ubuntu-bootstrap.sh | 150 ++++++++++++++++++++++---------- 2 files changed, 105 insertions(+), 52 deletions(-) diff --git a/dev/vagrant/centos-bootstrap.sh b/dev/vagrant/centos-bootstrap.sh index 2555eb479a..d73c130d7f 100644 --- a/dev/vagrant/centos-bootstrap.sh +++ b/dev/vagrant/centos-bootstrap.sh @@ -40,7 +40,7 @@ function prep_work { # Install and configure a quick&dirty docker daemon. function install_docker { # Allow for an externally supplied docker binary. - if [ -f "/data/docker" ]; then + if [[ -f "/data/docker" ]]; then cp /vagrant/docker /usr/bin/docker chmod +x /usr/bin/docker else @@ -90,7 +90,7 @@ function configure_operator { pip install ~vagrant/kolla # Note: this trickery requires a patched docker binary. - if [ "$http_proxy" = "" ]; then + 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 @@ -136,7 +136,6 @@ EOF # 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 \ @@ -154,6 +153,6 @@ EOF prep_work install_docker -if [ "$VM" = "operator" ]; then +if [[ "$VM" = "operator" ]]; then configure_operator fi diff --git a/dev/vagrant/ubuntu-bootstrap.sh b/dev/vagrant/ubuntu-bootstrap.sh index 028d09d1ec..eda37ef7f0 100644 --- a/dev/vagrant/ubuntu-bootstrap.sh +++ b/dev/vagrant/ubuntu-bootstrap.sh @@ -1,56 +1,117 @@ #!/bin/bash +# +# Bootstrap script to configure all nodes. +# VM=$1 MODE=$2 KOLLA_PATH=$3 -REGISTRY=operator.local -REGISTRY_PORT=4000 +export http_proxy= +export https_proxy= -install_ansible() { - echo "Installing Ansible" - apt-get install -y software-properties-common - apt-add-repository -y ppa:ansible/ansible +if [ "$MODE" = '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} +ADMIN_PROTOCOL="http" + +# Install common packages and do some prepwork. +function prep_work { apt-get update - apt-get install -y ansible=1.9.4* - cat >/root/.ansible.cfg <<-EOF + apt-get install -y python-mysqldb python-dev build-essential libssl-dev libffi-dev libxml2-dev libxslt-dev + apt-get clean + easy_install pip + 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 + apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D + echo "deb https://apt.dockerproject.org/repo ubuntu-wily main" > /etc/apt/sources.list.d/docker.list + apt-get update + apt-get install -y docker-engine + sed -i -r "s,(ExecStart)=(.+),\1=/usr/bin/docker daemon --insecure-registry ${REGISTRY} --registry-mirror=http://${REGISTRY}|" /lib/systemd/system/docker.service + systemctl daemon-reload + systemctl enable docker + systemctl restart docker + fi +} + +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 { + apt-get install -y git mariadb-client selinux-utils && apt-get clean + pip install --upgrade "ansible<2" python-openstackclient python-neutronclient 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 + oslo-config-generator --config-file \ + ~vagrant/kolla/etc/oslo-config-generator/kolla-build.conf \ + --output-file /etc/kolla/kolla-build.conf + mkdir -p /usr/share/kolla + chown -R vagrant: /etc/kolla /usr/share/kolla + + configure_kolla + + # Make sure Ansible uses scp. + cat > ~vagrant/.ansible.cfg < /etc/apt/sources.list.d/docker.list - apt-get update - apt-get install -y docker-engine - sed -i -r "s,(ExecStart)=(.+),\1=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock --insecure-registry ${REGISTRY}:${REGISTRY_PORT}," /lib/systemd/system/docker.service - systemctl daemon-reload - systemctl enable docker - systemctl restart docker -} + # The openrc file. + cat > ~vagrant/openrc < /etc/kolla/config/nova/nova-compute.conf <