| #!/bin/bash |
| # |
| # This script is useful for creating a devstack environment to run gophercloud |
| # acceptance tests on. |
| # |
| # To run, simply execute this script within a virtual machine. |
| # |
| # The following OpenStack versions are installed: |
| # * OpenStack Mitaka |
| # * Keystone v3 |
| # * Glance v1 and v2 |
| # * Nova v2 and v2.1 |
| # * Cinder v1 and v2 |
| # * Trove v1 |
| # * Swift v1 |
| # * Neutron v2 |
| # * Neutron LBaaS v2.0 |
| # * Neutron FWaaS v2.0 |
| # |
| # Go 1.6 is also installed. |
| |
| set -e |
| |
| cd |
| sudo apt-get update |
| sudo apt-get install -y git make mercurial |
| |
| sudo wget -O /usr/local/bin/gimme https://raw.githubusercontent.com/travis-ci/gimme/master/gimme |
| sudo chmod +x /usr/local/bin/gimme |
| gimme 1.6 >> .bashrc |
| |
| mkdir ~/go |
| eval "$(/usr/local/bin/gimme 1.6)" |
| echo 'export GOPATH=$HOME/go' >> .bashrc |
| export GOPATH=$HOME/go |
| |
| export PATH=$PATH:$HOME/terraform:$HOME/go/bin |
| echo 'export PATH=$PATH:$HOME/terraform:$HOME/go/bin' >> .bashrc |
| source .bashrc |
| |
| go get golang.org/x/crypto/ssh |
| go get gerrit.mcp.mirantis.net/debian/gophercloud.git |
| |
| git clone https://git.openstack.org/openstack-dev/devstack -b stable/mitaka |
| cd devstack |
| cat >local.conf <<EOF |
| [[local|localrc]] |
| # OpenStack version |
| OPENSTACK_VERSION="mitaka" |
| |
| # devstack password |
| DEVSTACK_PASSWORD="password" |
| |
| # Configure passwords and the Swift Hash |
| MYSQL_PASSWORD=\$DEVSTACK_PASSWORD |
| RABBIT_PASSWORD=\$DEVSTACK_PASSWORD |
| SERVICE_TOKEN=\$DEVSTACK_PASSWORD |
| ADMIN_PASSWORD=\$DEVSTACK_PASSWORD |
| SERVICE_PASSWORD=\$DEVSTACK_PASSWORD |
| SWIFT_HASH=\$DEVSTACK_PASSWORD |
| |
| # Configure the stable OpenStack branches used by DevStack |
| # For stable branches see |
| # http://git.openstack.org/cgit/openstack-dev/devstack/refs/ |
| CINDER_BRANCH=stable/\$OPENSTACK_VERSION |
| CEILOMETER_BRANCH=stable/\$OPENSTACK_VERSION |
| GLANCE_BRANCH=stable/\$OPENSTACK_VERSION |
| HEAT_BRANCH=stable/\$OPENSTACK_VERSION |
| HORIZON_BRANCH=stable/\$OPENSTACK_VERSION |
| KEYSTONE_BRANCH=stable/\$OPENSTACK_VERSION |
| NEUTRON_BRANCH=stable/\$OPENSTACK_VERSION |
| NOVA_BRANCH=stable/\$OPENSTACK_VERSION |
| SWIFT_BRANCH=stable/\$OPENSTACK_VERSION |
| ZAQAR_BRANCH=stable/\$OPENSTACK_VERSION |
| |
| # Enable Swift |
| enable_service s-proxy |
| enable_service s-object |
| enable_service s-container |
| enable_service s-account |
| |
| # Disable Nova Network and enable Neutron |
| disable_service n-net |
| enable_service q-svc |
| enable_service q-agt |
| enable_service q-dhcp |
| enable_service q-l3 |
| enable_service q-meta |
| enable_service q-flavors |
| |
| # Disable Neutron metering |
| disable_service q-metering |
| |
| # Enable LBaaS V1 |
| #enable_service q-lbaas |
| |
| # Enable FWaaS |
| enable_service q-fwaas |
| |
| # Enable LBaaS v2 |
| enable_plugin neutron-lbaas https://git.openstack.org/openstack/neutron-lbaas stable/\$OPENSTACK_VERSION |
| #enable_plugin octavia https://git.openstack.org/openstack/octavia stable/\$OPENSTACK_VERSION |
| enable_plugin octavia https://git.openstack.org/openstack/octavia |
| enable_service q-lbaasv2 |
| enable_service octavia |
| enable_service o-cw |
| enable_service o-hm |
| enable_service o-hk |
| enable_service o-api |
| |
| # Octavia |
| OCTAVIA_AUTH_VERSION=3 |
| |
| # Enable Trove |
| #enable_plugin trove git://git.openstack.org/openstack/trove.git stable/\$OPENSTACK_VERSION |
| #enable_service trove,tr-api,tr-tmgr,tr-cond |
| |
| # Disable Temptest |
| disable_service tempest |
| |
| # Disable Horizon |
| disable_service horizon |
| |
| # Disable Keystone v2 |
| ENABLE_IDENTITY_V2=False |
| |
| # Enable SSL/tls |
| #enable_service tls-proxy |
| #USE_SSL=True |
| |
| # Enable Ceilometer |
| #enable_service ceilometer-acompute |
| #enable_service ceilometer-acentral |
| #enable_service ceilometer-anotification |
| #enable_service ceilometer-collector |
| #enable_service ceilometer-alarm-evaluator |
| #enable_service ceilometer-alarm-notifier |
| #enable_service ceilometer-api |
| |
| # Enable Zaqar |
| #enable_plugin zaqar https://github.com/openstack/zaqar |
| #enable_service zaqar-server |
| |
| # Automatically download and register a VM image that Heat can launch |
| # For more information on Heat and DevStack see |
| # http://docs.openstack.org/developer/heat/getting_started/on_devstack.html |
| #IMAGE_URLS+=",http://cloud.fedoraproject.org/fedora-20.x86_64.qcow2" |
| #IMAGE_URLS+=",https://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img" |
| |
| # Logging |
| LOGDAYS=1 |
| LOGFILE=/opt/stack/logs/stack.sh.log |
| LOGDIR=/opt/stack/logs |
| |
| [[post-config|\$OCTAVIA_CONF]] |
| [default] |
| debug = true |
| verbose = true |
| [keystone_authtoken] |
| auth_uri = http://localhost:5000/v3 |
| auth_url = http://localhost:35357/v3 |
| user_domain_id = default |
| project_name = default |
| auth_type = password |
| [keystone_authtoken_v3] |
| admin_user_domain = default |
| admin_project_domain = default |
| [[post-config|\$NEUTRON_CONF]] |
| [service_auth] |
| auth_version = 3 |
| auth_uri = http://localhost:5000/v3 |
| auth_url = http://localhost:35357/v3 |
| admin_user_domain = default |
| admin_project_domain = default |
| [[post-config|\$NEUTRON_LBAAS_CONF]] |
| [service_auth] |
| auth_version = 3 |
| auth_uri = http://localhost:5000/v3 |
| auth_url = http://localhost:35357/v3 |
| admin_user_domain = default |
| admin_project_domain = default |
| EOF |
| ./stack.sh |
| |
| # Patch openrc |
| cat >> openrc <<EOF |
| if [ "\$OS_IDENTITY_API_VERSION" = "3" ]; then |
| export OS_DOMAIN_NAME=\${OS_DOMAIN_NAME:-"default"} |
| fi |
| EOF |
| |
| # Prep the testing environment by creating the required testing resources and environment variables |
| source openrc admin |
| wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img |
| glance image-create --name CirrOS --disk-format qcow2 --container-format bare < cirros-0.3.4-x86_64-disk.img |
| nova flavor-create m1.acctest 99 512 5 1 --ephemeral 10 |
| nova flavor-create m1.resize 98 512 6 1 --ephemeral 10 |
| _NETWORK_ID=$(nova net-list | grep private | awk -F\| '{print $2}' | tr -d ' ') |
| _EXTGW_ID=$(nova net-list | grep public | awk -F\| '{print $2}' | tr -d ' ') |
| _IMAGE_ID=$(nova image-list | grep CirrOS | awk -F\| '{print $2}' | tr -d ' ' | head -1) |
| echo export OS_IMAGE_NAME="cirros-0.3.4-x86_64-uec" >> openrc |
| echo export OS_IMAGE_ID="$_IMAGE_ID" >> openrc |
| echo export OS_NETWORK_ID=$_NETWORK_ID >> openrc |
| echo export OS_EXTGW_ID=$_EXTGW_ID >> openrc |
| echo export OS_POOL_NAME="public" >> openrc |
| echo export OS_FLAVOR_ID=99 >> openrc |
| echo export OS_FLAVOR_ID_RESIZE=98 >> openrc |
| source openrc demo |