From b5c5f74a35b7c2a3413bfac94811d8e6035aa3ae Mon Sep 17 00:00:00 2001 From: Narinder Gupta Date: Sat, 29 Aug 2015 14:31:22 -0500 Subject: restructure the directory structure so that we can have directories per SDN and then we can have same structure for new distro by adding just the yaml file. Deleted the old file structure. Change-Id: Ibd544c340fdb53813bc34ee8ff6931ed4b4dee6c JIRA:JOID-1 --- ci/odl/cloud-sh-odl/cloud-setup.sh | 10 +++ ci/odl/cloud-sh-odl/compute.sh | 8 ++ ci/odl/cloud-sh-odl/config.sh | 30 +++++++ ci/odl/cloud-sh-odl/config.yaml | 18 +++++ ci/odl/cloud-sh-odl/deploy.sh | 2 + ci/odl/cloud-sh-odl/environments.yaml | 8 ++ ci/odl/cloud-sh-odl/glance.sh | 8 ++ ci/odl/cloud-sh-odl/lxc-network.sh | 18 +++++ ci/odl/cloud-sh-odl/openstack.sh | 146 ++++++++++++++++++++++++++++++++++ 9 files changed, 248 insertions(+) create mode 100755 ci/odl/cloud-sh-odl/cloud-setup.sh create mode 100755 ci/odl/cloud-sh-odl/compute.sh create mode 100644 ci/odl/cloud-sh-odl/config.sh create mode 100644 ci/odl/cloud-sh-odl/config.yaml create mode 100755 ci/odl/cloud-sh-odl/deploy.sh create mode 100644 ci/odl/cloud-sh-odl/environments.yaml create mode 100755 ci/odl/cloud-sh-odl/glance.sh create mode 100755 ci/odl/cloud-sh-odl/lxc-network.sh create mode 100755 ci/odl/cloud-sh-odl/openstack.sh (limited to 'ci/odl/cloud-sh-odl') diff --git a/ci/odl/cloud-sh-odl/cloud-setup.sh b/ci/odl/cloud-sh-odl/cloud-setup.sh new file mode 100755 index 00000000..2a0bc2a7 --- /dev/null +++ b/ci/odl/cloud-sh-odl/cloud-setup.sh @@ -0,0 +1,10 @@ +#!/bin/sh -e + +. ~/admin-openrc + +# adjust tiny image +nova flavor-delete m1.tiny +nova flavor-create m1.tiny 1 512 8 1 + +# import key pair +nova keypair-add --pub-key id_rsa.pub ubuntu-keypair diff --git a/ci/odl/cloud-sh-odl/compute.sh b/ci/odl/cloud-sh-odl/compute.sh new file mode 100755 index 00000000..eb818250 --- /dev/null +++ b/ci/odl/cloud-sh-odl/compute.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +modprobe kvm_intel +printf "\n%s\n" kvm_intel >> /etc/modules +service libvirt-bin restart + +sed -e 's/KSM_ENABLED=1/KSM_ENABLED=0/' -i /etc/default/qemu-kvm +service qemu-kvm restart diff --git a/ci/odl/cloud-sh-odl/config.sh b/ci/odl/cloud-sh-odl/config.sh new file mode 100644 index 00000000..66932c58 --- /dev/null +++ b/ci/odl/cloud-sh-odl/config.sh @@ -0,0 +1,30 @@ +export JUJU_REPOSITORY=../charms + +DEFAULT_SERIES=trusty + +CHARM_GLANCE=local:trusty/glance + +CHARM_KEYSTONE=local:trusty/keystone +CHARM_KEYSTONE_DEPLOY_OPTS="--config config.yaml" + +CHARM_MYSQL=trusty/mysql +CHARM_MYSQL_DEPLOY_OPTS="--config config.yaml" + +CHARM_NEUTRON_API=local:trusty/neutron-api +CHARM_NEUTRON_API_DEPLOY_OPTS="--config config.yaml" + +CHARM_NEUTRON_GATEWAY=local:trusty/quantum-gateway +CHARM_NEUTRON_GATEWAY_DEPLOY_OPTS="--config config.yaml" + +CHARM_NEUTRON_ODL=local:trusty/neutron-odl + +CHARM_NOVA_CLOUD_CONTROLLER=local:trusty/nova-cloud-controller +CHARM_NOVA_CLOUD_CONTROLLER_DEPLOY_OPTS="--config config.yaml" + +CHARM_NOVA_COMPUTE=local:trusty/nova-compute + +CHARM_ODL_CONTROLLER=local:trusty/odl-controller + +CHARM_OPENSTACK_DASHBOARD=local:trusty/openstack-dashboard + +CHARM_RABBITMQ_SERVER=trusty/rabbitmq-server diff --git a/ci/odl/cloud-sh-odl/config.yaml b/ci/odl/cloud-sh-odl/config.yaml new file mode 100644 index 00000000..066171be --- /dev/null +++ b/ci/odl/cloud-sh-odl/config.yaml @@ -0,0 +1,18 @@ +keystone: + admin-password: password + +mysql: + dataset-size: 10% + max-connections: 1000 + +neutron-api: + neutron-plugin: odl + neutron-security-groups: True + +neutron-gateway: + instance-mtu: 1400 + plugin: odl + +nova-cloud-controller: + network-manager: Neutron + quantum-security-groups: "yes" diff --git a/ci/odl/cloud-sh-odl/deploy.sh b/ci/odl/cloud-sh-odl/deploy.sh new file mode 100755 index 00000000..b0a63b6b --- /dev/null +++ b/ci/odl/cloud-sh-odl/deploy.sh @@ -0,0 +1,2 @@ +#!/bin/sh -e +exec ./openstack.sh ./config.sh 2>&1 | tee out.log diff --git a/ci/odl/cloud-sh-odl/environments.yaml b/ci/odl/cloud-sh-odl/environments.yaml new file mode 100644 index 00000000..72a492d3 --- /dev/null +++ b/ci/odl/cloud-sh-odl/environments.yaml @@ -0,0 +1,8 @@ +default: local + +environments: + local: + type: local + container: kvm + default-series: trusty + lxc-clone: true diff --git a/ci/odl/cloud-sh-odl/glance.sh b/ci/odl/cloud-sh-odl/glance.sh new file mode 100755 index 00000000..467932ff --- /dev/null +++ b/ci/odl/cloud-sh-odl/glance.sh @@ -0,0 +1,8 @@ +#!/bin/sh -e + +. ~/admin-openrc + +wget http://cloud-images.ubuntu.com/trusty/current/MD5SUMS + +wget http://cloud-images.ubuntu.com/trusty/current/trusty-server-cloudimg-amd64-disk1.img +glance image-create --name ubuntu-trusty-daily --disk-format qcow2 --container-format bare --owner admin --file trusty-server-cloudimg-amd64-disk1.img --checksum $(grep trusty-server-cloudimg-amd64-disk1.img MD5SUMS | cut -d " " -f 1) --is-public True diff --git a/ci/odl/cloud-sh-odl/lxc-network.sh b/ci/odl/cloud-sh-odl/lxc-network.sh new file mode 100755 index 00000000..5a65fa18 --- /dev/null +++ b/ci/odl/cloud-sh-odl/lxc-network.sh @@ -0,0 +1,18 @@ +#!/bin/sh -e + +DEBIAN_FRONTEND=noninteractive apt-get -qy -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install lxc < /dev/null + +sed -e 's/^USE_LXC_BRIDGE="true"/USE_LXC_BRIDGE="false"/' -i /etc/default/lxc +service lxc-net restart + +ifdown eth0 +mv /etc/network/interfaces.d/eth0.cfg /etc/network/interfaces.d/eth0.cfg.bak +cat <<-"EOF" > /etc/network/interfaces.d/bridge.cfg + auto eth0 + iface eth0 inet manual + + auto lxcbr0 + iface lxcbr0 inet dhcp + bridge_ports eth0 + EOF +ifup eth0 lxcbr0 diff --git a/ci/odl/cloud-sh-odl/openstack.sh b/ci/odl/cloud-sh-odl/openstack.sh new file mode 100755 index 00000000..9da2cfb5 --- /dev/null +++ b/ci/odl/cloud-sh-odl/openstack.sh @@ -0,0 +1,146 @@ +#!/bin/sh -ex + +agentState() +{ + juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"machines\"][\"$1\"][\"agent-state\"]" 2> /dev/null +} + +agentStateUnit() +{ + juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"agent-state\"]" 2> /dev/null +} + +configOpenrc() +{ + cat <<-EOF + export OS_USERNAME=$1 + export OS_PASSWORD=$2 + export OS_TENANT_NAME=$3 + export OS_AUTH_URL=$4 + export OS_REGION_NAME=$5 + EOF +} + +unitAddress() +{ + juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"public-address\"]" 2> /dev/null +} + +unitMachine() +{ + juju status | python -c "import yaml; import sys; print yaml.load(sys.stdin)[\"services\"][\"$1\"][\"units\"][\"$1/$2\"][\"machine\"]" 2> /dev/null +} + +waitForMachine() +{ + for machine; do + while [ "$(agentState $machine)" != started ]; do + sleep 5 + done + done +} + +waitForService() +{ + for service; do + while [ "$(agentStateUnit "$service" 0)" != started ]; do + sleep 5 + done + done +} + +if [ $# -ne 0 ]; then + . "$1" +fi + +juju bootstrap +waitForMachine 0 + +spare_cpus=$(($(grep processor /proc/cpuinfo | wc -l) - 5)) +if [ $spare_cpus -gt 0 ]; then + spare_cpus=$(((spare_cpus * 3) / 4)) +else + spare_cpus=0 +fi + +extra_cpus=0 +[ $spare_cpus -ne 0 ] && extra_cpus=$((1 + (((spare_cpus - 1) * 3) / 4))) && spare_cpus=$((spare_cpus - extra_cpus)) +juju add-machine --constraints "cpu-cores=$((1 + extra_cpus)) mem=8G root-disk=20G" --series $DEFAULT_SERIES + +juju deploy --constraints mem=1G $CHARM_NEUTRON_GATEWAY_DEPLOY_OPTS "${CHARM_NEUTRON_GATEWAY:-quantum-gateway}" neutron-gateway + +juju deploy --constraints "cpu-cores=$((1 + spare_cpus)) mem=4G root-disk=20G" $CHARM_NOVA_COMPUTE_DEPLOY_OPTS "${CHARM_NOVA_COMPUTE:-nova-compute}" + +waitForMachine 1 +juju scp lxc-network.sh 1: +juju run --machine 1 "sudo ./lxc-network.sh" +juju deploy --to lxc:1 $CHARM_MYSQL_DEPLOY_OPTS "${CHARM_MYSQL:-mysql}" +juju deploy --to lxc:1 $CHARM_RABBITMQ_SERVER_DEPLOY_OPTS "${CHARM_RABBITMQ_SERVER:-rabbitmq-server}" +juju deploy --to lxc:1 $CHARM_KEYSTONE_DEPLOY_OPTS "${CHARM_KEYSTONE:-keystone}" +juju deploy --to lxc:1 $CHARM_NOVA_CLOUD_CONTROLLER_DEPLOY_OPTS "${CHARM_NOVA_CLOUD_CONTROLLER:-nova-cloud-controller}" +juju deploy --to lxc:1 $CHARM_NEUTRON_API_DEPLOY_OPTS "${CHARM_NEUTRON_API:-neutron-api}" +juju deploy --to lxc:1 $CHARM_GLANCE_DEPLOY_OPTS "${CHARM_GLANCE:-glance}" +juju deploy --to lxc:1 $CHARM_OPENSTACK_DASHBOARD_DEPLOY_OPTS "${CHARM_OPENSTACK_DASHBOARD:-openstack-dashboard}" +# opendaylight +juju deploy --to lxc:1 $CHARM_ODL_CONTROLLER_DEPLOY_OPTS "${CHARM_ODL_CONTROLLER:-odl-controller}" +juju deploy $CHARM_NEUTRON_ODL_DEPLOY_OPTS "${CHARM_NEUTRON_ODL:-neutron-odl}" + +# relation must be set first +# no official way of knowing when this relation hook will fire +waitForService mysql keystone +juju add-relation keystone mysql +sleep 60 + +waitForService rabbitmq-server nova-cloud-controller glance +juju add-relation nova-cloud-controller mysql +juju add-relation nova-cloud-controller rabbitmq-server +juju add-relation nova-cloud-controller glance +juju add-relation nova-cloud-controller keystone +sleep 60 + +waitForService neutron-api +juju add-relation neutron-api mysql +juju add-relation neutron-api rabbitmq-server +juju add-relation neutron-api keystone +juju add-relation neutron-api nova-cloud-controller +sleep 60 + +waitForService openstack-dashboard neutron-gateway nova-compute +juju add-relation neutron-gateway mysql +juju add-relation neutron-gateway:amqp rabbitmq-server:amqp +juju add-relation neutron-gateway nova-cloud-controller +juju add-relation neutron-gateway neutron-api +juju add-relation nova-compute:shared-db mysql:shared-db +juju add-relation nova-compute:amqp rabbitmq-server:amqp +juju add-relation nova-compute glance +juju add-relation nova-compute nova-cloud-controller +juju add-relation glance mysql +juju add-relation glance keystone +juju add-relation openstack-dashboard keystone +sleep 60 + +# opendaylight +waitForService odl-controller +juju add-relation neutron-api odl-controller +juju add-relation neutron-gateway odl-controller +juju add-relation nova-compute neutron-odl +juju add-relation neutron-odl odl-controller +sleep 60 + +# enable kvm on compute +machine=$(unitMachine nova-compute 0) +juju scp compute.sh $machine: +juju run --machine $machine "sudo ./compute.sh" + +mkdir -m 0700 -p cloud +controller_address=$(unitAddress keystone 0) +configOpenrc admin password Admin http://$controller_address:5000/v2.0 RegionOne > cloud/admin-openrc +chmod 0600 cloud/admin-openrc + +machine=$(unitMachine nova-cloud-controller 0) +juju scp cloud-setup.sh cloud/admin-openrc ~/.ssh/id_rsa.pub $machine: +juju run --machine $machine ./cloud-setup.sh + +machine=$(unitMachine glance 0) +juju scp glance.sh cloud/admin-openrc $machine: +juju run --machine $machine ./glance.sh -- cgit 1.2.3-korg