summaryrefslogtreecommitdiffstats
path: root/juju
diff options
context:
space:
mode:
Diffstat (limited to 'juju')
-rwxr-xr-xjuju/configure-juju-on-openstack6
-rwxr-xr-xjuju/joid-configure-openstack32
-rwxr-xr-xjuju/k8s/clearwater/deploy_clearwater_k8s.sh73
-rwxr-xr-xjuju/k8s/clearwater/set_depl_files.py62
4 files changed, 153 insertions, 20 deletions
diff --git a/juju/configure-juju-on-openstack b/juju/configure-juju-on-openstack
index c83a45a4..1d98fd08 100755
--- a/juju/configure-juju-on-openstack
+++ b/juju/configure-juju-on-openstack
@@ -91,9 +91,9 @@ cd -
swift stat simplestreams
swift post simplestreams --read-acl .r:*
-openstack service create --name product-stream --description "Product Simple Stream" product-streams
-SWIFT_URL=`openstack endpoint list --service swift --interface internal -c URL -f value`
+openstack service show product-streams > /dev/null 2>&1 || openstack service create --name product-streams --description "Product Simple Stream" product-streams
+SWIFT_URL=`openstack endpoint list --service swift --interface internal -c URL -f value`
openstack endpoint create --region $OS_REGION_NAME product-streams public $SWIFT_URL/simplestreams/images
openstack endpoint create --region $OS_REGION_NAME product-streams internal $SWIFT_URL/simplestreams/images
@@ -124,7 +124,7 @@ juju add-credential openstack -f os-creds.yaml --replace
#Bootstrap with Juju
-juju bootstrap openstack --config image-metadata-url=$SWIFT_URL/simplestreams/images --config use-floating-ip=true --config network=private
+juju bootstrap openstack --debug --config image-metadata-url=$SWIFT_URL/simplestreams/images --config use-floating-ip=true --config network=private
juju gui --show-credentials --no-browser
#Print the address of Juju-gui for deployments on Openstack
diff --git a/juju/joid-configure-openstack b/juju/joid-configure-openstack
index 52347b4a..ab4c1670 100755
--- a/juju/joid-configure-openstack
+++ b/juju/joid-configure-openstack
@@ -35,16 +35,16 @@ fi
echo "Configuring Openstack Neutron Networking"
#create ext network with neutron for floating IPs
-EXTERNAL_NETWORK_ID=$(neutron net-show ext-net | grep " id" | awk '{print $4}')
+EXTERNAL_NETWORK_ID=$(openstack network show ext-net | grep " id" | awk '{print $4}')
#Create private network for neutron for tenant VMs
-neutron net-show private > /dev/null 2>&1 || neutron net-create private
-neutron subnet-show private_subnet > /dev/null 2>&1 || neutron subnet-create private $NEUTRON_FIXED_NET_CIDR -- --name private_subnet --dns_nameservers list=true 8.8.8.8
-SUBNET_ID=$(neutron subnet-show private_subnet | grep " id" | awk '{print $4}')
+openstack network show private > /dev/null 2>&1 || openstack network create private
+openstack subnet show private_subnet > /dev/null 2>&1 || neutron subnet-create private $NEUTRON_FIXED_NET_CIDR -- --name private_subnet --dns_nameservers list=true 8.8.8.8
+SUBNET_ID=$(openstack subnet show private_subnet | grep " id" | awk '{print $4}')
#Create router for external network and private network
-openstack router list provider-router > /dev/null 2>&1 || openstack router create --project-domain=$OS_PROJECT_DOMAIN_NAME --project $OS_PROJECT_NAME provider-router
-ROUTER_ID=$(neutron router-show provider-router | grep " id" | awk '{print $4}')
+openstack router show provider-router > /dev/null 2>&1 || openstack router create --project-domain=$OS_PROJECT_DOMAIN_NAME --project $OS_PROJECT_NAME provider-router
+ROUTER_ID=$(openstack router show provider-router | grep " id" | awk '{print $4}')
neutron router-gateway-clear provider-router || true
neutron router-gateway-set $ROUTER_ID $EXTERNAL_NETWORK_ID
@@ -57,9 +57,9 @@ echo "Configuring security groups for access to ICMP, SSH and RDP by default"
PROJECT_ID=`openstack project list -c ID -f value --domain admin_domain`
#Configure the default security group to allow ICMP and SSH
-SEC_GRP=`openstack security group list --project "$PROJECT_ID" -c ID -f value`
-openstack security group rule list $SEC_GRP | grep "icmp" > /dev/null 2>&1 || openstack security group rule create --remote-group $SEC_GRP --ingress --protocol icmp --prefix "0.0.0.0/0" $SEC_GRP
-openstack security group rule list $SEC_GRP | grep "22/tcp" > /dev/null 2>&1 || openstack security group rule create --remote-group $SEC_GRP --ingress --protocol tcp --dst-port 22:22 --prefix "0.0.0.0/0" $SEC_GRP
+#SEC_GRP=`openstack security group list --project "$PROJECT_ID" -c ID -f value`
+#openstack security group rule list $SEC_GRP | grep "icmp" > /dev/null 2>&1 || openstack security group rule create --remote-group $SEC_GRP --ingress --protocol icmp --prefix "0.0.0.0/0" $SEC_GRP
+#openstack security group rule list $SEC_GRP | grep "22/tcp" > /dev/null 2>&1 || openstack security group rule create --remote-group $SEC_GRP --ingress --protocol tcp --dst-port 22:22 --prefix "0.0.0.0/0" $SEC_GRP
echo "Uploading default SSH key"
@@ -94,13 +94,11 @@ echo "Uploading images to glance"
## image name is used by script to generate metadata .. don't screw the series
if grep -q 'virt-type: lxd' bundles.yaml; then
- glance image-list | grep "Xenial LXC x86_64" > /dev/null 2>&1 || glance image-create --name="Xenial LXC x86_64" --visibility=public --container-format=bare --disk-format=root-tar --property architecture="x86_64" < /srv/data/xenial-server-cloudimg-amd64-root.tar.gz
- glance image-list | grep "Cirros LXC 0.3" > /dev/null 2>&1 || glance image-create --name="Cirros LXC 0.3" --visibility=public --container-format=bare --disk-format=root-tar --property architecture="x86_64" < /srv/data/cirros-0.3.4-x86_64-lxc.tar.gz
+ openstack image list | grep "Xenial LXC x86_64" > /dev/null 2>&1 || glance image-create --name="Xenial LXC x86_64" --visibility=public --container-format=bare --disk-format=root-tar --property architecture="x86_64" < /srv/data/xenial-server-cloudimg-amd64-root.tar.gz
+ openstack image list | grep "Cirros LXC 0.3" > /dev/null 2>&1 || glance image-create --name="Cirros LXC 0.3" --visibility=public --container-format=bare --disk-format=root-tar --property architecture="x86_64" < /srv/data/cirros-0.3.4-x86_64-lxc.tar.gz
else
- #glance image-list | grep "Precise x86_64" > /dev/null 2>&1 || glance image-create --name="Precise x86_64" --visibility=public --container-format=ovf --disk-format=qcow2 < /srv/data/precise-server-cloudimg-amd64-disk1.img
- glance image-list | grep "Trusty x86_64" > /dev/null 2>&1 || glance image-create --name="Trusty x86_64" --visibility=public --container-format=ovf --disk-format=qcow2 < /srv/data/trusty-server-cloudimg-amd64-disk1.img
- glance image-list | grep "Xenial x86_64" > /dev/null 2>&1 || glance image-create --name="Xenial x86_64" --visibility=public --container-format=ovf --disk-format=qcow2 < /srv/data/xenial-server-cloudimg-amd64-disk1.img
- glance image-list | grep "CentOS 6.4" > /dev/null 2>&1 || glance image-create --name="CentOS 6.4" --visibility=public --container-format=bare --disk-format=qcow2 < /srv/data/centos6.4-x86_64-gold-master.img
- glance image-list | grep "Cirros 0.3" > /dev/null 2>&1 || glance image-create --name="Cirros 0.3" --visibility=public --container-format=bare --disk-format=qcow2 < /srv/data/cirros-0.3.4-x86_64-disk.img
- #glance image-list | grep "win2012r2" > /dev/null 2>&1 || gzip -cd /srv/data/windows_server_2012_r2_standard_eval_kvm_20151021.qcow2.gz |glance image-create --name="Windows Server 2012" --is-public=true --container-format=bare --disk-format=qcow2 --progress
+ openstack image list | grep "Trusty x86_64" > /dev/null 2>&1 || openstack image create "Trusty x86_64" --public --container-format=ovf --disk-format=qcow2 < /srv/data/trusty-server-cloudimg-amd64-disk1.img
+ openstack image list | grep "Xenial x86_64" > /dev/null 2>&1 || openstack image create "Xenial x86_64" --public --container-format=ovf --disk-format=qcow2 < /srv/data/xenial-server-cloudimg-amd64-disk1.img
+ openstack image list | grep "CentOS 6.4" > /dev/null 2>&1 || openstack image create "CentOS 6.4" --public --container-format=bare --disk-format=qcow2 < /srv/data/centos6.4-x86_64-gold-master.img
+ openstack image list | grep "Cirros 0.3" > /dev/null 2>&1 || openstack image create "Cirros 0.3" --public --container-format=bare --disk-format=qcow2 < /srv/data/cirros-0.3.4-x86_64-disk.img
fi
diff --git a/juju/k8s/clearwater/deploy_clearwater_k8s.sh b/juju/k8s/clearwater/deploy_clearwater_k8s.sh
new file mode 100755
index 00000000..695f5083
--- /dev/null
+++ b/juju/k8s/clearwater/deploy_clearwater_k8s.sh
@@ -0,0 +1,73 @@
+#!/bin/bash
+
+# Copyright 2017 Aakash KT <aakashkt0@gmail.com> <aakash.kt@research.iiit.ac.in>
+
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+
+# http://www.apache.org/licenses/LICENSE-2.0
+
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+
+function setup_docker() {
+ echo "Installing docker..."
+ sudo apt-get install -y docker.io
+
+ sudo docker login --username="aakashkt" --password="joid123"
+}
+
+function setup_clearwater() {
+ echo "Preparing docker images..."
+
+ git clone --recursive https://github.com/Metaswitch/clearwater-docker.git
+ pushd clearwater-docker
+
+ for i in base astaire cassandra chronos bono ellis homer homestead ralf sprout
+ do
+ sudo docker build -t clearwater/$i $i
+ done
+
+ for i in base astaire cassandra chronos bono ellis homer homestead ralf sprout
+ do
+ sudo docker tag clearwater/$i:latest $1/$i:latest
+ sudo docker push $1/$i:latest
+ done
+
+ popd
+}
+
+function setup_k8s() {
+ echo "Preparing the k8s cluster..."
+ python set_depl_files.py $1 $2
+}
+
+function deploy() {
+ juju run --application kubeapi-load-balancer 'open-port 5060'
+
+ juju run --application kubernetes-master 'open-port 30080'
+ juju run --application kubernetes-worker 'open-port 30080'
+
+ sudo kubectl create -f clearwater-docker/kubernetes
+ echo "Done"
+}
+
+cp set_depl_files.py /tmp/
+pushd /tmp/
+
+juju run --application kubeapi-load-balancer 'unit-get public-address'
+load_balancer_ip=$?
+docker_repo="aakashkt"
+
+setup_docker
+setup_clearwater $docker_repo
+setup_k8s $docker_repo $load_balancer_ip
+deploy
+
+popd \ No newline at end of file
diff --git a/juju/k8s/clearwater/set_depl_files.py b/juju/k8s/clearwater/set_depl_files.py
new file mode 100755
index 00000000..784ad5e3
--- /dev/null
+++ b/juju/k8s/clearwater/set_depl_files.py
@@ -0,0 +1,62 @@
+'''
+Copyright 2017 Aakash KT <aakashkt0@gmail.com> <aakash.kt@research.iiit.ac.in>
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
+'''
+
+import yaml
+import sys
+import os
+
+files = ["astaire", "bono", "cassandra", "chronos", "ellis", "etcd", "homer", "homestead",
+ "ralf", "sprout"];
+
+try:
+ repo = sys.argv[1];
+ load_balancer_ip = sys.argv[2];
+except:
+ print "Usage : python set_depl_files.py <repository_name> <load_balancer_ip>";
+ sys.exit(0);
+
+for f in files:
+
+ fp = file("clearwater-docker/kubernetes/%s-depl.yaml"%f, "r+");
+ yaml_fp = yaml.load(fp);
+
+ yaml_fp["spec"]["template"]["spec"]["containers"][0]["image"] = "%s/%s:latest" % (repo, f);
+
+ fp.truncate(0);
+ fp.seek(0, 0);
+ fp.write(yaml.dump(yaml_fp));
+ fp.close();
+
+fp = file("clearwater-docker/kubernetes/bono-depl.yaml", "r+");
+bono_fp = yaml.load(fp);
+bono_depl_env = bono_fp["spec"]["template"]["spec"]["containers"][0]["env"];
+
+for item in bono_depl_env:
+ if item["name"] == "PUBLIC_IP":
+ item["value"] = load_balancer_ip;
+
+fp.truncate(0);
+fp.seek(0, 0);
+fp.write(yaml.dump(bono_fp));
+fp.close();
+
+fp = file("clearwater-docker/kubernetes/bono-svc.yaml", "r+");
+bono_fp = yaml.load(fp);
+bono_fp["spec"]["loadBalancerIP"] = load_balancer_ip;
+fp.truncate(0);
+fp.seek(0, 0);
+fp.write(yaml.dump(bono_fp));
+fp.close(); \ No newline at end of file