From f8751eb3270fe98b33cd641e557b9ed5cf72e984 Mon Sep 17 00:00:00 2001 From: Sebastian Rieger Date: Mon, 13 May 2019 12:47:29 +0200 Subject: [PATCH] moved start of worker-3, changed var names to reflect their usage --- demo4-scale-out-add-worker.py | 96 +++++++++++++++++++++++++++++++++++ demo4-scale-out-destroy.py | 4 +- demo4-scale-out.py | 39 +++++++------- 3 files changed, 120 insertions(+), 19 deletions(-) create mode 100644 demo4-scale-out-add-worker.py diff --git a/demo4-scale-out-add-worker.py b/demo4-scale-out-add-worker.py new file mode 100644 index 0000000..468af31 --- /dev/null +++ b/demo4-scale-out-add-worker.py @@ -0,0 +1,96 @@ +# import getpass +# import os +# import libcloud.security + +import time +from libcloud.compute.providers import get_driver +from libcloud.compute.types import Provider + +# reqs: +# services: nova, glance, neutron +# resources: 2 instances (m1.small), 2 floating ips (1 keypair, 2 security groups) + +# Please use 1-25 for X in username, project etc., as coordinated in the lab sessions + +# web service endpoint of the private cloud infrastructure +auth_url = 'https://private-cloud2.informatik.hs-fulda.de:5000' +# your username in OpenStack +auth_username = 'CloudCompX' +# your project in OpenStack +project_name = 'CloudCompGrpX' + +# default region +region_name = 'RegionOne' +# domain to use, "default" for local accounts, "hsfulda" for LDAP of DVZ, e.g., using fdaiXXXX as auth_username +domain_name = "default" + +ubuntu_image_name = "Ubuntu 14.04 - Trusty Tahr - 64-bit - Cloud Based Image" +#ubuntu_image_name = "Ubuntu 18.04 - Bionic Beaver - 64-bit - Cloud Based Image" + +flavor_name = 'm1.small' + +network_name = "CloudCompGrpX-net" + +keypair_name = 'srieger-pub' +pub_key_file = '~/.ssh/id_rsa.pub' + +api_1_ip = "192.168.0.x" +services_ip = "192.168.0.y" + + +def main(): + ########################################################################### + # + # get credentials + # + ########################################################################### + + # if "OS_PASSWORD" in os.environ: + # auth_password = os.environ["OS_PASSWORD"] + # else: + # auth_password = getpass.getpass("Enter your OpenStack password:") + auth_password = "demo" + + ########################################################################### + # + # create connection + # + ########################################################################### + + # libcloud.security.VERIFY_SSL_CERT = False + + provider = get_driver(Provider.OPENSTACK) + conn = provider(auth_username, + auth_password, + ex_force_auth_url=auth_url, + ex_force_auth_version='3.x_password', + ex_tenant_name=project_name, + ex_force_service_region=region_name, + ex_domain_name=domain_name) + + ########################################################################### + # + # create worker instances + # + ########################################################################### + + userdata_worker = '''#!/usr/bin/env bash + curl -L -s https://git.openstack.org/cgit/openstack/faafo/plain/contrib/install.sh | bash -s -- \ + -i faafo -r worker -e 'http://%(api_1_ip)s' -m 'amqp://guest:guest@%(services_ip)s:5672/' + ''' % {'api_1_ip': api_1_ip, 'services_ip': services_ip} + + # userdata-api-2 = '''#!/usr/bin/env bash + # curl -L -s https://git.openstack.org/cgit/openstack/faafo/plain/contrib/install.sh | bash -s -- \ + # -i faafo -r worker -e 'http://%(api_2_ip)s' -m 'amqp://guest:guest@%(services_ip)s:5672/' + # ''' % {'api_2_ip': api_2_ip, 'services_ip': services_ip} + + print('Starting new app-worker-3 instance and wait until it is running...') + instance_worker_3 = conn.create_node(name='app-worker-3', + image=image, size=flavor, + networks=[network], + ex_keyname=keypair_name, + ex_userdata=userdata_worker, + ex_security_groups=[worker_security_group]) + +if __name__ == '__main__': + main() diff --git a/demo4-scale-out-destroy.py b/demo4-scale-out-destroy.py index 3619351..58edf8d 100644 --- a/demo4-scale-out-destroy.py +++ b/demo4-scale-out-destroy.py @@ -25,6 +25,7 @@ region_name = 'RegionOne' domain_name = "default" ubuntu_image_name = "Ubuntu 14.04 - Trusty Tahr - 64-bit - Cloud Based Image" +#ubuntu_image_name = "Ubuntu 18.04 - Bionic Beaver - 64-bit - Cloud Based Image" flavor_name = 'm1.small' @@ -85,7 +86,8 @@ def main(): instances = conn.list_nodes() for instance in instances: # if we see any demo instances still running continue to wait for them to stop - if instance.name in ['all-in-one', 'app-worker-1', 'app-worker-2', 'app-controller']: + if instance.name in ['all-in-one', 'app-worker-1', 'app-worker-2', 'app-worker-3', 'app-controller', + 'app-services', 'app-api-1', 'app-api-2']: nodes_still_running = True print('There are still instances running, waiting for them to be destroyed...') diff --git a/demo4-scale-out.py b/demo4-scale-out.py index 8e907bb..bf7e107 100644 --- a/demo4-scale-out.py +++ b/demo4-scale-out.py @@ -25,6 +25,7 @@ region_name = 'RegionOne' domain_name = "default" ubuntu_image_name = "Ubuntu 14.04 - Trusty Tahr - 64-bit - Cloud Based Image" +#ubuntu_image_name = "Ubuntu 18.04 - Bionic Beaver - 64-bit - Cloud Based Image" flavor_name = 'm1.small' @@ -220,7 +221,7 @@ def main(): # # Thanks to Stefan Friedmann for finding this fix ;) - userdata = '''#!/usr/bin/env bash + userdata_service = '''#!/usr/bin/env bash curl -L -s https://git.openstack.org/cgit/openstack/faafo/plain/contrib/install.sh | bash -s -- \ -i database -i messaging rabbitmqctl add_user faafo guest @@ -234,7 +235,7 @@ def main(): size=flavor, networks=[network], ex_keyname=keypair_name, - ex_userdata=userdata, + ex_userdata=userdata_service, ex_security_groups=[services_security_group]) instance_services = conn.wait_until_running(nodes=[instance_services], timeout=120, ssh_interface='private_ips')[0][0] @@ -246,7 +247,7 @@ def main(): # ########################################################################### - userdata = '''#!/usr/bin/env bash + userdata_api = '''#!/usr/bin/env bash curl -L -s https://git.openstack.org/cgit/openstack/faafo/plain/contrib/install.sh | bash -s -- \ -i faafo -r api -m 'amqp://guest:guest@%(services_ip)s:5672/' \ -d 'mysql+pymysql://faafo:password@%(services_ip)s:3306/faafo' @@ -258,7 +259,7 @@ def main(): size=flavor, networks=[network], ex_keyname=keypair_name, - ex_userdata=userdata, + ex_userdata=userdata_api, ex_security_groups=[api_security_group]) print('Starting new app-api-2 instance and wait until it is running...') @@ -267,7 +268,7 @@ def main(): size=flavor, networks=[network], ex_keyname=keypair_name, - ex_userdata=userdata, + ex_userdata=userdata_api, ex_security_groups=[api_security_group]) instance_api_1 = conn.wait_until_running(nodes=[instance_api_1], timeout=120, @@ -288,12 +289,12 @@ def main(): # ########################################################################### - userdata_api_1 = '''#!/usr/bin/env bash + userdata_worker = '''#!/usr/bin/env bash curl -L -s https://git.openstack.org/cgit/openstack/faafo/plain/contrib/install.sh | bash -s -- \ -i faafo -r worker -e 'http://%(api_1_ip)s' -m 'amqp://guest:guest@%(services_ip)s:5672/' ''' % {'api_1_ip': api_1_ip, 'services_ip': services_ip} - # userdata-api-2 = '''#!/usr/bin/env bash + # userdata_api-api-2 = '''#!/usr/bin/env bash # curl -L -s https://git.openstack.org/cgit/openstack/faafo/plain/contrib/install.sh | bash -s -- \ # -i faafo -r worker -e 'http://%(api_2_ip)s' -m 'amqp://guest:guest@%(services_ip)s:5672/' # ''' % {'api_2_ip': api_2_ip, 'services_ip': services_ip} @@ -303,28 +304,30 @@ def main(): image=image, size=flavor, networks=[network], ex_keyname=keypair_name, - ex_userdata=userdata_api_1, + ex_userdata=userdata_worker, ex_security_groups=[worker_security_group]) - print('Starting new app-worker-1 instance and wait until it is running...') + print('Starting new app-worker-2 instance and wait until it is running...') instance_worker_2 = conn.create_node(name='app-worker-2', image=image, size=flavor, networks=[network], ex_keyname=keypair_name, - ex_userdata=userdata_api_1, + ex_userdata=userdata_worker, ex_security_groups=[worker_security_group]) - print('Starting new app-worker-1 instance and wait until it is running...') - instance_worker_3 = conn.create_node(name='app-worker-3', - image=image, size=flavor, - networks=[network], - ex_keyname=keypair_name, - ex_userdata=userdata_api_1, - ex_security_groups=[worker_security_group]) + # do not start worker 3 initially, can be started using scale-out-add-worker.py demo + + #print('Starting new app-worker-3 instance and wait until it is running...') + #instance_worker_3 = conn.create_node(name='app-worker-3', + # image=image, size=flavor, + # networks=[network], + # ex_keyname=keypair_name, + # ex_userdata=userdata_worker, + # ex_security_groups=[worker_security_group]) print(instance_worker_1) print(instance_worker_2) - print(instance_worker_3) + #print(instance_worker_3) if __name__ == '__main__':