From ab7c7ec8d74647c3e9f73ec6abb60866064fc6a2 Mon Sep 17 00:00:00 2001 From: MatthewLi Date: Thu, 24 Mar 2016 22:22:43 -0400 Subject: rubbos instance workflow improvement JIRA: BOTTLENECK-46 Change-Id: I3c2adc93701b4b1fb2d34601e2aaeb8d714880b7 Signed-off-by: MatthewLi --- .../heat_template/HOT_create_instance.sh | 325 --------------------- .../heat_template/bottlenecks_rubbos_hot.yaml | 300 ------------------- .../heat_template/bottlenecks_template1.yaml | 104 ------- .../rubbos_heat_template/HOT_create_instance.sh | 325 +++++++++++++++++++++ .../rubbos_1-1-1_template.yaml | 300 +++++++++++++++++++ .../rubbos_1-2-1_template.yaml | 321 ++++++++++++++++++++ 6 files changed, 946 insertions(+), 729 deletions(-) delete mode 100755 utils/infra_setup/heat_template/HOT_create_instance.sh delete mode 100644 utils/infra_setup/heat_template/bottlenecks_rubbos_hot.yaml delete mode 100755 utils/infra_setup/heat_template/bottlenecks_template1.yaml create mode 100755 utils/infra_setup/heat_template/rubbos_heat_template/HOT_create_instance.sh create mode 100755 utils/infra_setup/heat_template/rubbos_heat_template/rubbos_1-1-1_template.yaml create mode 100755 utils/infra_setup/heat_template/rubbos_heat_template/rubbos_1-2-1_template.yaml diff --git a/utils/infra_setup/heat_template/HOT_create_instance.sh b/utils/infra_setup/heat_template/HOT_create_instance.sh deleted file mode 100755 index 1a80d950..00000000 --- a/utils/infra_setup/heat_template/HOT_create_instance.sh +++ /dev/null @@ -1,325 +0,0 @@ -#!/bin/bash -############################################################################## -# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. -# -# All rights reserved. This program and the accompanying materials -# are made available under the terms of the Apache License, Version 2.0 -# which accompanies this distribution, and is available at -# http://www.apache.org/licenses/LICENSE-2.0 -############################################################################## - -set -x - -git_checkout() -{ - if git cat-file -e $1^{commit} 2>/dev/null; then - # branch, tag or sha1 object - git checkout $1 - else - # refspec / changeset - git fetch --tags --progress $2 $1 - git checkout FETCH_HEAD - fi -} - -bottlenecks_env_prepare() { - set -e - echo "Bottlenecks env prepare start $(date)" - git config --global http.sslVerify false - - if [ ! -d $BOTTLENECKS_REPO_DIR ]; then - git clone $BOTTLENECKS_REPO $BOTTLENECKS_REPO_DIR - fi - cd $BOTTLENECKS_REPO_DIR - git checkout master && git pull - git_checkout $BOTTLENECKS_BRANCH $BOTTLENECKS_REPO - cd - - - echo "Creating openstack credentials .." - if [ ! -d $RELENG_REPO_DIR ]; then - git clone $RELENG_REPO $RELENG_REPO_DIR - fi - cd $RELENG_REPO_DIR - git checkout master && git pull - git_checkout $RELENG_BRANCH $RELENG_REPO - cd - - - # Create openstack credentials - $RELENG_REPO_DIR/utils/fetch_os_creds.sh \ - -d /tmp/openrc \ - -i ${INSTALLER_TYPE} -a ${INSTALLER_IP} - - source /tmp/openrc - - chmod 600 $KEY_PATH/bottlenecks_key - - echo "Bottlenecks env prepare end $(date)" - set +e -} - -wait_heat_stack_complete() { - retry=0 - while true - do - status=$(heat stack-list | grep bottlenecks | awk '{print $6}') - if [ x$status = x"CREATE_COMPLETE" ]; then - echo "bottlenecks stacke create complete" - heat stack-show bottlenecks - nova list | grep rubbos_ - break; - elif [ x$status = x"CREATE_FAILED" ]; then - echo "bottlenecks stacke create failed !!!" - heat stack-show bottlenecks - exit 1 - fi - - #if [ $BOTTLENECKS_DEBUG = True ]; then - if false; then - heat stack-show bottlenecks - nova list | grep rubbos_ - for i in $(nova list | grep rubbos_ | grep ERROR | awk '{print $2}') - do - nova show $i - done - fi - sleep 1 - let retry+=1 - if [[ $retry -ge $1 ]];then - echo "Heat stack create timeout, status $status !!!" - exit 1 - fi - done -} - -wait_rubbos_control_ok() { - control_ip=$(nova list | grep rubbos_control | awk '{print $13}') - - retry=0 - until timeout 3s ssh $ssh_args ubuntu@$control_ip "exit" >/dev/null 2>&1 - do - echo "retry connect rubbos control $retry" - sleep 1 - let retry+=1 - if [[ $retry -ge $1 ]];then - echo "rubbos control start timeout !!!" - exit 1 - fi - done - ssh $ssh_args ubuntu@$control_ip "uname -a" -} - -bottlenecks_check_instance_ok() -{ - echo "Bottlenecks check instance ok start $(date)" - - wait_heat_stack_complete 120 - wait_rubbos_control_ok 300 - nova list | grep rubbos_ - if [ $BOTTLENECKS_DEBUG = True ]; then - date - while true - do - for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \ - rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 rubbos_tomcat1 - do - echo "logging $i" - nova console-log $i | tail -n 2 | grep Cloud-init | grep finished - if [ $? != 0 ]; then - break - fi - if [ $i = rubbos_tomcat1 ]; then - echo "all vm Cloud-init finished!" - date - return - fi - done - sleep 10 - done - fi - - echo "Bottlenecks check instance ok end $(date)" -} - -bottlenecks_create_instance() -{ - echo "Bottlenecks create instance using heat template start $(date)" - - echo "upload keypair" - nova keypair-add --pub_key $KEY_PATH/bottlenecks_key.pub $KEY_NAME - - echo "create flavor" - nova flavor-create $FLAVOR_NAME 200 4096 20 2 - - echo "use heat template to create stack" - cd $HOT_PATH - heat stack-create bottlenecks -f ${TEMPLATE_NAME} \ - -P "image=$IMAGE_NAME;key_name=$KEY_NAME;public_net=$EXTERNAL_NET;flavor=$FLAVOR_NAME" - - echo "Bottlenecks create instance using heat template end $(date)" -} - -bottlenecks_rubbos_wait_finish() -{ - echo "Start checking rubbos running status..." - retry=0 - while true - do - ssh $ssh_args ubuntu@$control_ip "FILE=/tmp/rubbos_finished; if [ -f \$FILE ]; then exit 0; else exit 1; fi" - if [ $? = 0 ]; then - echo "Rubbos test case successfully finished :)" - return 0 - fi - echo "Rubbos running $retry ..." - sleep 30 - let retry+=1 - if [[ $retry -ge $1 ]]; then - echo "Rubbos test case timeout :(" - return 1 - fi - done -} - -bottlenecks_rubbos_run() -{ - echo "Run Rubbos" - control_ip=$(nova list | grep rubbos_control | awk '{print $13}') - for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \ - rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 \ - rubbos_tomcat1 - do - ip=$(nova list | grep $i | awk '{print $12}' | awk -F [=,] '{print $2}') - echo "$i=$ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf - done - - nameserver_ip=$(grep -m 1 '^nameserver' \ - /etc/resolv.conf | awk '{ print $2 '}) - echo "nameserver_ip=$nameserver_ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf - - echo "GERRIT_REFSPEC_DEBUG=$GERRIT_REFSPEC_DEBUG" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf - echo "BOTTLENECKS_BRANCH=$BOTTLENECKS_BRANCH" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf - - echo "NODE_NAME=$NODE_NAME" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf - echo "INSTALLER_TYPE=$INSTALLER_TYPE" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf - echo "BOTTLENECKS_VERSION=$BOTTLENECKS_VERSION" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf - echo "BOTTLENECKS_DB_TARGET=$BOTTLENECKS_DB_TARGET" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf - echo "PACKAGE_URL=$PACKAGE_URL" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf - - scp $ssh_args -r \ - $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \ - ubuntu@$control_ip:/tmp - ssh $ssh_args \ - ubuntu@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh" & - - bottlenecks_rubbos_wait_finish 200 - - if [ x"$GERRIT_REFSPEC_DEBUG" != x ]; then - # TODO fix hard coded path - scp $ssh_args \ - ubuntu@$control_ip:"/bottlenecks/rubbos/rubbos_results/2015-01-20T081237-0700.tgz" /tmp - fi - - rm -rf $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf -} - -bottlenecks_cleanup() -{ - echo "Bottlenecks cleanup start $(date)" - - if heat stack-list; then - for stack in $(heat stack-list | grep -e bottlenecks | awk '{print $2}'); do - echo "clean up stack $stack" - heat stack-delete $stack || true - sleep 30 - done - fi - - if glance image-list; then - for image in $(glance image-list | grep -e $IMAGE_NAME | awk '{print $2}'); do - echo "clean up image $image" - glance image-delete $image || true - done - fi - - if nova keypair-list; then - for key in $(nova keypair-list | grep -e $KEY_NAME | awk '{print $2}'); do - echo "clean up key $key" - nova keypair-delete $key || true - done - fi - - if nova flavor-list; then - for flavor in $(nova flavor-list | grep -e $FLAVOR_NAME | awk '{print $2}'); do - echo "clean up flavor $flavor" - nova flavor-delete $flavor || true - done - fi - - echo "Bottlenecks cleanup end $(date)" -} - -bottlenecks_load_bottlenecks_image() -{ - echo "Bottlenecks load image start $(date)" - - curl --connect-timeout 10 -o /tmp/bottlenecks-trusty-server.img $IMAGE_URL -v - - result=$(glance image-create \ - --name $IMAGE_NAME \ - --disk-format qcow2 \ - --container-format bare \ - --file /tmp/bottlenecks-trusty-server.img) - echo "$result" - - rm -rf /tmp/bottlenecks-trusty-server.img - - IMAGE_ID_BOTTLENECKS=$(echo "$result" | grep " id " | awk '{print $(NF-1)}') - if [ -z "$IMAGE_ID_BOTTLENECKS" ]; then - echo 'failed to upload bottlenecks image to openstack' - exit 1 - fi - - echo "bottlenecks image end id: $IMAGE_ID_BOTTLENECKS $(date)" -} - -main() -{ - echo "main start $(date)" - - : ${BOTTLENECKS_DEBUG:='True'} - : ${BOTTLENECKS_REPO:='https://gerrit.opnfv.org/gerrit/bottlenecks'} - : ${BOTTLENECKS_REPO_DIR:='/tmp/opnfvrepo/bottlenecks'} - : ${BOTTLENECKS_BRANCH:='master'} # branch, tag, sha1 or refspec - : ${RELENG_REPO:='https://gerrit.opnfv.org/gerrit/releng'} - : ${RELENG_REPO_DIR:='/tmp/opnfvrepo/releng'} - : ${RELENG_BRANCH:='master'} # branch, tag, sha1 or refspec - : ${IMAGE_NAME:='bottlenecks-trusty-server'} - KEY_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/bottlenecks_key - HOT_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/heat_template - : ${KEY_NAME:='bottlenecks-key'} - : ${FLAVOR_NAME:='bottlenecks-flavor'} - : ${TEMPLATE_NAME:='bottlenecks_rubbos_hot.yaml'} - ssh_args="-o StrictHostKeyChecking=no -o BatchMode=yes -i $KEY_PATH/bottlenecks_key" - : ${EXTERNAL_NET:='net04_ext'} - : ${PACKAGE_URL:='http://artifacts.opnfv.org/bottlenecks'} - : ${NODE_NAME:='opnfv-jump-2'} - : ${INSTALLER_TYPE:='fuel'} - : ${INSTALLER_IP:='10.20.0.2'} - # TODO fix for dashboard - : ${BOTTLENECKS_VERSION:='master'} - : ${BOTTLENECKS_DB_TARGET:='213.77.62.197'} - IMAGE_URL=${PACKAGE_URL}/rubbos/bottlenecks-trusty-server.img - - bottlenecks_env_prepare - set -x - bottlenecks_cleanup - bottlenecks_load_bottlenecks_image - bottlenecks_create_instance - bottlenecks_check_instance_ok - bottlenecks_rubbos_run - bottlenecks_cleanup - echo "main end $(date)" -} - -main -set +x - diff --git a/utils/infra_setup/heat_template/bottlenecks_rubbos_hot.yaml b/utils/infra_setup/heat_template/bottlenecks_rubbos_hot.yaml deleted file mode 100644 index 53600443..00000000 --- a/utils/infra_setup/heat_template/bottlenecks_rubbos_hot.yaml +++ /dev/null @@ -1,300 +0,0 @@ -heat_template_version: 2013-05-23 - -description: > - HOT template to create a new neutron network plus a router to the public - network, and for deploying nine servers into the new network. The template also - assigns floating IP addresses to rubbos_control server so it is routable from the - public network. -parameters: - key_name: - type: string - description: Name of keypair to assign to servers - default: bottlenecks-key - image: - type: string - description: Name of image to use for servers - default: bottlenecks-trusty-server - flavor: - type: string - description: Flavor to use for servers - default: bottlenecks-flavor - public_net: - type: string - description: > - ID or name of public network for which floating IP addresses will be allocated - default: net04_ext - private_net_name: - type: string - description: Name of private network to be created - default: bottlenecks-private - private_net_cidr: - type: string - description: Private network address (CIDR notation) - default: "10.0.10.0/24" - private_net_gateway: - type: string - description: Private network gateway address - default: "10.0.10.1" - private_net_pool_start: - type: string - description: Start of private network IP address allocation pool - default: "10.0.10.2" - private_net_pool_end: - type: string - description: End of private network IP address allocation pool - default: "10.0.10.199" - -resources: - private_net: - type: OS::Neutron::Net - properties: - name: { get_param: private_net_name } - - private_subnet: - type: OS::Neutron::Subnet - properties: - network_id: { get_resource: private_net } - cidr: { get_param: private_net_cidr } - gateway_ip: { get_param: private_net_gateway } - allocation_pools: - - start: { get_param: private_net_pool_start } - end: { get_param: private_net_pool_end } - - router: - type: OS::Neutron::Router - properties: - external_gateway_info: - network: { get_param: public_net } - - router_interface: - type: OS::Neutron::RouterInterface - properties: - router_id: { get_resource: router } - subnet_id: { get_resource: private_subnet } - - rubbos_control: - type: OS::Nova::Server - properties: - name: rubbos_control - image: { get_param: image } - flavor: { get_param: flavor } - key_name: { get_param: key_name } - networks: - - port: { get_resource: rubbos_control_port } - admin_user: ubuntu - - rubbos_control_port: - type: OS::Neutron::Port - properties: - network_id: { get_resource: private_net } - fixed_ips: - - subnet_id: { get_resource: private_subnet } - security_groups: [{ get_resource: server_security_group }] - - rubbos_control_floating_ip: - type: OS::Neutron::FloatingIP - properties: - floating_network: { get_param: public_net } - port_id: { get_resource: rubbos_control_port } - - rubbos_httpd: - type: OS::Nova::Server - properties: - name: rubbos_httpd - image: { get_param: image } - flavor: { get_param: flavor } - key_name: { get_param: key_name } - networks: - - port: { get_resource: rubbos_httpd_port } - admin_user: ubuntu - - rubbos_httpd_port: - type: OS::Neutron::Port - properties: - network_id: { get_resource: private_net } - fixed_ips: - - subnet_id: { get_resource: private_subnet } - security_groups: [{ get_resource: server_security_group }] - - rubbos_mysql1: - type: OS::Nova::Server - properties: - name: rubbos_mysql1 - image: { get_param: image } - flavor: { get_param: flavor } - key_name: { get_param: key_name } - networks: - - port: { get_resource: rubbos_mysql1_port } - admin_user: ubuntu - - rubbos_mysql1_port: - type: OS::Neutron::Port - properties: - network_id: { get_resource: private_net } - fixed_ips: - - subnet_id: { get_resource: private_subnet } - security_groups: [{ get_resource: server_security_group }] - - rubbos_tomcat1: - type: OS::Nova::Server - properties: - name: rubbos_tomcat1 - image: { get_param: image } - flavor: { get_param: flavor } - key_name: { get_param: key_name } - networks: - - port: { get_resource: rubbos_tomcat1_port } - admin_user: ubuntu - - rubbos_tomcat1_port: - type: OS::Neutron::Port - properties: - network_id: { get_resource: private_net } - fixed_ips: - - subnet_id: { get_resource: private_subnet } - security_groups: [{ get_resource: server_security_group }] - - rubbos_client1: - type: OS::Nova::Server - properties: - name: rubbos_client1 - image: { get_param: image } - flavor: { get_param: flavor } - key_name: { get_param: key_name } - networks: - - port: { get_resource: rubbos_client1_port } - admin_user: ubuntu - - rubbos_client1_port: - type: OS::Neutron::Port - properties: - network_id: { get_resource: private_net } - fixed_ips: - - subnet_id: { get_resource: private_subnet } - security_groups: [{ get_resource: server_security_group }] - - rubbos_client2: - type: OS::Nova::Server - properties: - name: rubbos_client2 - image: { get_param: image } - flavor: { get_param: flavor } - key_name: { get_param: key_name } - networks: - - port: { get_resource: rubbos_client2_port } - admin_user: ubuntu - - rubbos_client2_port: - type: OS::Neutron::Port - properties: - network_id: { get_resource: private_net } - fixed_ips: - - subnet_id: { get_resource: private_subnet } - security_groups: [{ get_resource: server_security_group }] - - rubbos_client3: - type: OS::Nova::Server - properties: - name: rubbos_client3 - image: { get_param: image } - flavor: { get_param: flavor } - key_name: { get_param: key_name } - networks: - - port: { get_resource: rubbos_client3_port } - admin_user: ubuntu - - rubbos_client3_port: - type: OS::Neutron::Port - properties: - network_id: { get_resource: private_net } - fixed_ips: - - subnet_id: { get_resource: private_subnet } - security_groups: [{ get_resource: server_security_group }] - - rubbos_client4: - type: OS::Nova::Server - properties: - name: rubbos_client4 - image: { get_param: image } - flavor: { get_param: flavor } - key_name: { get_param: key_name } - networks: - - port: { get_resource: rubbos_client4_port } - admin_user: ubuntu - - rubbos_client4_port: - type: OS::Neutron::Port - properties: - network_id: { get_resource: private_net } - fixed_ips: - - subnet_id: { get_resource: private_subnet } - security_groups: [{ get_resource: server_security_group }] - - rubbos_benchmark: - type: OS::Nova::Server - properties: - name: rubbos_benchmark - image: { get_param: image } - flavor: { get_param: flavor } - key_name: { get_param: key_name } - networks: - - port: { get_resource: rubbos_benchmark_port } - admin_user: ubuntu - - rubbos_benchmark_port: - type: OS::Neutron::Port - properties: - network_id: { get_resource: private_net } - fixed_ips: - - subnet_id: { get_resource: private_subnet } - security_groups: [{ get_resource: server_security_group }] - - server_security_group: - type: OS::Neutron::SecurityGroup - properties: - description: Rubbos group for servers access. - name: rubbos-security-group - rules: [ - {remote_ip_prefix: 0.0.0.0/0, - protocol: tcp, - port_range_min: 1, - port_range_max: 65535}, - {remote_ip_prefix: 0.0.0.0/0, - protocol: udp, - port_range_min: 1, - port_range_max: 65535}, - {remote_ip_prefix: 0.0.0.0/0, - protocol: icmp}] - -outputs: - rubbos_control_private_ip: - description: IP address of rubbos_control in private network - value: { get_attr: [ rubbos_control, first_address ] } - rubbos_control_public_ip: - description: Floating IP address of rubbos_control in public network - value: { get_attr: [ rubbos_control_floating_ip, floating_ip_address ] } - rubbos_httpd_private_ip: - description: IP address of rubbos_httpd in private network - value: { get_attr: [ rubbos_httpd, first_address ] } - rubbos_mysql1_private_ip: - description: IP address of rubbos_mysql1 in private network - value: { get_attr: [ rubbos_mysql1, first_address ] } - rubbos_tomcat1_private_ip: - description: IP address of rubbos_tomcat1 in private network - value: { get_attr: [ rubbos_tomcat1, first_address ] } - rubbos_client1_private_ip: - description: IP address of rubbos_client1 in private network - value: { get_attr: [ rubbos_client1, first_address ] } - rubbos_client2_private_ip: - description: IP address of rubbos_client2 in private network - value: { get_attr: [ rubbos_client2, first_address ] } - rubbos_client3_private_ip: - description: IP address of rubbos_client3 in private network - value: { get_attr: [ rubbos_client3, first_address ] } - rubbos_client4_private_ip: - description: IP address of rubbos_client4 in private network - value: { get_attr: [ rubbos_client4, first_address ] } - rubbos_benchmark_private_ip: - description: IP address of rubbos_benchmark in private network - value: { get_attr: [ rubbos_benchmark, first_address ] } - diff --git a/utils/infra_setup/heat_template/bottlenecks_template1.yaml b/utils/infra_setup/heat_template/bottlenecks_template1.yaml deleted file mode 100755 index 7c6dd8e7..00000000 --- a/utils/infra_setup/heat_template/bottlenecks_template1.yaml +++ /dev/null @@ -1,104 +0,0 @@ -heat_template_version: 2014-10-16 - -description: template to deploy a instance used for bottlenecks project - -parameters: - image: - type: string - label: Image name or ID - description: Image to be used for deploying instance - default: your_image_name - flavor: - type: string - label: Flavor - description: Type of instance (flavor) to be used - default: m1.medium - key: - type: string - label: Key name - description: Name of key-pair to be used for deploying instance - default: your_key - public_network: - type: string - label: Public network name or ID - description: Network to attach instance to. - default: your_public_net - -resources: - web_server_security_group: - type: OS::Neutron::SecurityGroup - properties: - name: web_server_security_group - rules: - - protocol: tcp - port_range_min: 80 - port_range_max: 80 - - protocol: tcp - port_range_min: 443 - port_range_max: 443 - - protocol: icmp - - protocol: tcp - port_range_min: 22 - port_range_max: 22 - private_network: - type: OS::Neutron::Net - - private_subnet: - type: OS::Neutron::Subnet - properties: - network_id: {get_resource: private_network } - cidr: 10.10.10.0/24 #change it according to your own requirement - dns_nameservers: - - 8.8.8.8 - - router: - type: OS::Neutron::Router - properties: - external_gateway_info: - network: { get_param: public_network } - - router-interface: - type: OS::Neutron::RouterInterface - properties: - router_id: { get_resource: router } - subnet: { get_resource: private_subnet } - - floating_ip: - type: OS::Neutron::FloatingIP - properties: - floating_network: { get_param: public_network } - - floating_ip_assoc: - type: OS::Neutron::FloatingIPAssociation - properties: - floatingip_id: { get_resource: floating_ip } - port_id: { get_resource: bottlenecks_port } - - bottlenecks_port: - type: OS::Neutron::Port - properties: - network: { get_resource: private_network } - security_groups: - - { get_resource: web_server_security_group } - - bottlenecks_instance: - type: OS::Nova::Server - properties: - image: { get_param: image } - flavor: { get_param: flavor } - key_name: { get_param: key } - networks: - - port: { get_resource: bottlenecks_port } - user_data_format: RAW - user_data: | - #!/bin/sh -ex - - echo "hello world" - -outputs: - instance_name: - description: Name of the instance - value: { get_attr: [bottlenecks_instance, name] } - instance_ip: - description: IP address of the deployed instance - value: { get_attr: [floating_ip, floating_ip_address] } diff --git a/utils/infra_setup/heat_template/rubbos_heat_template/HOT_create_instance.sh b/utils/infra_setup/heat_template/rubbos_heat_template/HOT_create_instance.sh new file mode 100755 index 00000000..1a80d950 --- /dev/null +++ b/utils/infra_setup/heat_template/rubbos_heat_template/HOT_create_instance.sh @@ -0,0 +1,325 @@ +#!/bin/bash +############################################################################## +# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others. +# +# All rights reserved. This program and the accompanying materials +# are made available under the terms of the Apache License, Version 2.0 +# which accompanies this distribution, and is available at +# http://www.apache.org/licenses/LICENSE-2.0 +############################################################################## + +set -x + +git_checkout() +{ + if git cat-file -e $1^{commit} 2>/dev/null; then + # branch, tag or sha1 object + git checkout $1 + else + # refspec / changeset + git fetch --tags --progress $2 $1 + git checkout FETCH_HEAD + fi +} + +bottlenecks_env_prepare() { + set -e + echo "Bottlenecks env prepare start $(date)" + git config --global http.sslVerify false + + if [ ! -d $BOTTLENECKS_REPO_DIR ]; then + git clone $BOTTLENECKS_REPO $BOTTLENECKS_REPO_DIR + fi + cd $BOTTLENECKS_REPO_DIR + git checkout master && git pull + git_checkout $BOTTLENECKS_BRANCH $BOTTLENECKS_REPO + cd - + + echo "Creating openstack credentials .." + if [ ! -d $RELENG_REPO_DIR ]; then + git clone $RELENG_REPO $RELENG_REPO_DIR + fi + cd $RELENG_REPO_DIR + git checkout master && git pull + git_checkout $RELENG_BRANCH $RELENG_REPO + cd - + + # Create openstack credentials + $RELENG_REPO_DIR/utils/fetch_os_creds.sh \ + -d /tmp/openrc \ + -i ${INSTALLER_TYPE} -a ${INSTALLER_IP} + + source /tmp/openrc + + chmod 600 $KEY_PATH/bottlenecks_key + + echo "Bottlenecks env prepare end $(date)" + set +e +} + +wait_heat_stack_complete() { + retry=0 + while true + do + status=$(heat stack-list | grep bottlenecks | awk '{print $6}') + if [ x$status = x"CREATE_COMPLETE" ]; then + echo "bottlenecks stacke create complete" + heat stack-show bottlenecks + nova list | grep rubbos_ + break; + elif [ x$status = x"CREATE_FAILED" ]; then + echo "bottlenecks stacke create failed !!!" + heat stack-show bottlenecks + exit 1 + fi + + #if [ $BOTTLENECKS_DEBUG = True ]; then + if false; then + heat stack-show bottlenecks + nova list | grep rubbos_ + for i in $(nova list | grep rubbos_ | grep ERROR | awk '{print $2}') + do + nova show $i + done + fi + sleep 1 + let retry+=1 + if [[ $retry -ge $1 ]];then + echo "Heat stack create timeout, status $status !!!" + exit 1 + fi + done +} + +wait_rubbos_control_ok() { + control_ip=$(nova list | grep rubbos_control | awk '{print $13}') + + retry=0 + until timeout 3s ssh $ssh_args ubuntu@$control_ip "exit" >/dev/null 2>&1 + do + echo "retry connect rubbos control $retry" + sleep 1 + let retry+=1 + if [[ $retry -ge $1 ]];then + echo "rubbos control start timeout !!!" + exit 1 + fi + done + ssh $ssh_args ubuntu@$control_ip "uname -a" +} + +bottlenecks_check_instance_ok() +{ + echo "Bottlenecks check instance ok start $(date)" + + wait_heat_stack_complete 120 + wait_rubbos_control_ok 300 + nova list | grep rubbos_ + if [ $BOTTLENECKS_DEBUG = True ]; then + date + while true + do + for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \ + rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 rubbos_tomcat1 + do + echo "logging $i" + nova console-log $i | tail -n 2 | grep Cloud-init | grep finished + if [ $? != 0 ]; then + break + fi + if [ $i = rubbos_tomcat1 ]; then + echo "all vm Cloud-init finished!" + date + return + fi + done + sleep 10 + done + fi + + echo "Bottlenecks check instance ok end $(date)" +} + +bottlenecks_create_instance() +{ + echo "Bottlenecks create instance using heat template start $(date)" + + echo "upload keypair" + nova keypair-add --pub_key $KEY_PATH/bottlenecks_key.pub $KEY_NAME + + echo "create flavor" + nova flavor-create $FLAVOR_NAME 200 4096 20 2 + + echo "use heat template to create stack" + cd $HOT_PATH + heat stack-create bottlenecks -f ${TEMPLATE_NAME} \ + -P "image=$IMAGE_NAME;key_name=$KEY_NAME;public_net=$EXTERNAL_NET;flavor=$FLAVOR_NAME" + + echo "Bottlenecks create instance using heat template end $(date)" +} + +bottlenecks_rubbos_wait_finish() +{ + echo "Start checking rubbos running status..." + retry=0 + while true + do + ssh $ssh_args ubuntu@$control_ip "FILE=/tmp/rubbos_finished; if [ -f \$FILE ]; then exit 0; else exit 1; fi" + if [ $? = 0 ]; then + echo "Rubbos test case successfully finished :)" + return 0 + fi + echo "Rubbos running $retry ..." + sleep 30 + let retry+=1 + if [[ $retry -ge $1 ]]; then + echo "Rubbos test case timeout :(" + return 1 + fi + done +} + +bottlenecks_rubbos_run() +{ + echo "Run Rubbos" + control_ip=$(nova list | grep rubbos_control | awk '{print $13}') + for i in rubbos_benchmark rubbos_client1 rubbos_client2 rubbos_client3 \ + rubbos_client4 rubbos_control rubbos_httpd rubbos_mysql1 \ + rubbos_tomcat1 + do + ip=$(nova list | grep $i | awk '{print $12}' | awk -F [=,] '{print $2}') + echo "$i=$ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf + done + + nameserver_ip=$(grep -m 1 '^nameserver' \ + /etc/resolv.conf | awk '{ print $2 '}) + echo "nameserver_ip=$nameserver_ip" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf + + echo "GERRIT_REFSPEC_DEBUG=$GERRIT_REFSPEC_DEBUG" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf + echo "BOTTLENECKS_BRANCH=$BOTTLENECKS_BRANCH" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf + + echo "NODE_NAME=$NODE_NAME" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf + echo "INSTALLER_TYPE=$INSTALLER_TYPE" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf + echo "BOTTLENECKS_VERSION=$BOTTLENECKS_VERSION" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf + echo "BOTTLENECKS_DB_TARGET=$BOTTLENECKS_DB_TARGET" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf + echo "PACKAGE_URL=$PACKAGE_URL" >> $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf + + scp $ssh_args -r \ + $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup \ + ubuntu@$control_ip:/tmp + ssh $ssh_args \ + ubuntu@$control_ip "bash /tmp/vm_dev_setup/setup_env.sh" & + + bottlenecks_rubbos_wait_finish 200 + + if [ x"$GERRIT_REFSPEC_DEBUG" != x ]; then + # TODO fix hard coded path + scp $ssh_args \ + ubuntu@$control_ip:"/bottlenecks/rubbos/rubbos_results/2015-01-20T081237-0700.tgz" /tmp + fi + + rm -rf $BOTTLENECKS_REPO_DIR/utils/infra_setup/vm_dev_setup/hosts.conf +} + +bottlenecks_cleanup() +{ + echo "Bottlenecks cleanup start $(date)" + + if heat stack-list; then + for stack in $(heat stack-list | grep -e bottlenecks | awk '{print $2}'); do + echo "clean up stack $stack" + heat stack-delete $stack || true + sleep 30 + done + fi + + if glance image-list; then + for image in $(glance image-list | grep -e $IMAGE_NAME | awk '{print $2}'); do + echo "clean up image $image" + glance image-delete $image || true + done + fi + + if nova keypair-list; then + for key in $(nova keypair-list | grep -e $KEY_NAME | awk '{print $2}'); do + echo "clean up key $key" + nova keypair-delete $key || true + done + fi + + if nova flavor-list; then + for flavor in $(nova flavor-list | grep -e $FLAVOR_NAME | awk '{print $2}'); do + echo "clean up flavor $flavor" + nova flavor-delete $flavor || true + done + fi + + echo "Bottlenecks cleanup end $(date)" +} + +bottlenecks_load_bottlenecks_image() +{ + echo "Bottlenecks load image start $(date)" + + curl --connect-timeout 10 -o /tmp/bottlenecks-trusty-server.img $IMAGE_URL -v + + result=$(glance image-create \ + --name $IMAGE_NAME \ + --disk-format qcow2 \ + --container-format bare \ + --file /tmp/bottlenecks-trusty-server.img) + echo "$result" + + rm -rf /tmp/bottlenecks-trusty-server.img + + IMAGE_ID_BOTTLENECKS=$(echo "$result" | grep " id " | awk '{print $(NF-1)}') + if [ -z "$IMAGE_ID_BOTTLENECKS" ]; then + echo 'failed to upload bottlenecks image to openstack' + exit 1 + fi + + echo "bottlenecks image end id: $IMAGE_ID_BOTTLENECKS $(date)" +} + +main() +{ + echo "main start $(date)" + + : ${BOTTLENECKS_DEBUG:='True'} + : ${BOTTLENECKS_REPO:='https://gerrit.opnfv.org/gerrit/bottlenecks'} + : ${BOTTLENECKS_REPO_DIR:='/tmp/opnfvrepo/bottlenecks'} + : ${BOTTLENECKS_BRANCH:='master'} # branch, tag, sha1 or refspec + : ${RELENG_REPO:='https://gerrit.opnfv.org/gerrit/releng'} + : ${RELENG_REPO_DIR:='/tmp/opnfvrepo/releng'} + : ${RELENG_BRANCH:='master'} # branch, tag, sha1 or refspec + : ${IMAGE_NAME:='bottlenecks-trusty-server'} + KEY_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/bottlenecks_key + HOT_PATH=$BOTTLENECKS_REPO_DIR/utils/infra_setup/heat_template + : ${KEY_NAME:='bottlenecks-key'} + : ${FLAVOR_NAME:='bottlenecks-flavor'} + : ${TEMPLATE_NAME:='bottlenecks_rubbos_hot.yaml'} + ssh_args="-o StrictHostKeyChecking=no -o BatchMode=yes -i $KEY_PATH/bottlenecks_key" + : ${EXTERNAL_NET:='net04_ext'} + : ${PACKAGE_URL:='http://artifacts.opnfv.org/bottlenecks'} + : ${NODE_NAME:='opnfv-jump-2'} + : ${INSTALLER_TYPE:='fuel'} + : ${INSTALLER_IP:='10.20.0.2'} + # TODO fix for dashboard + : ${BOTTLENECKS_VERSION:='master'} + : ${BOTTLENECKS_DB_TARGET:='213.77.62.197'} + IMAGE_URL=${PACKAGE_URL}/rubbos/bottlenecks-trusty-server.img + + bottlenecks_env_prepare + set -x + bottlenecks_cleanup + bottlenecks_load_bottlenecks_image + bottlenecks_create_instance + bottlenecks_check_instance_ok + bottlenecks_rubbos_run + bottlenecks_cleanup + echo "main end $(date)" +} + +main +set +x + diff --git a/utils/infra_setup/heat_template/rubbos_heat_template/rubbos_1-1-1_template.yaml b/utils/infra_setup/heat_template/rubbos_heat_template/rubbos_1-1-1_template.yaml new file mode 100755 index 00000000..53600443 --- /dev/null +++ b/utils/infra_setup/heat_template/rubbos_heat_template/rubbos_1-1-1_template.yaml @@ -0,0 +1,300 @@ +heat_template_version: 2013-05-23 + +description: > + HOT template to create a new neutron network plus a router to the public + network, and for deploying nine servers into the new network. The template also + assigns floating IP addresses to rubbos_control server so it is routable from the + public network. +parameters: + key_name: + type: string + description: Name of keypair to assign to servers + default: bottlenecks-key + image: + type: string + description: Name of image to use for servers + default: bottlenecks-trusty-server + flavor: + type: string + description: Flavor to use for servers + default: bottlenecks-flavor + public_net: + type: string + description: > + ID or name of public network for which floating IP addresses will be allocated + default: net04_ext + private_net_name: + type: string + description: Name of private network to be created + default: bottlenecks-private + private_net_cidr: + type: string + description: Private network address (CIDR notation) + default: "10.0.10.0/24" + private_net_gateway: + type: string + description: Private network gateway address + default: "10.0.10.1" + private_net_pool_start: + type: string + description: Start of private network IP address allocation pool + default: "10.0.10.2" + private_net_pool_end: + type: string + description: End of private network IP address allocation pool + default: "10.0.10.199" + +resources: + private_net: + type: OS::Neutron::Net + properties: + name: { get_param: private_net_name } + + private_subnet: + type: OS::Neutron::Subnet + properties: + network_id: { get_resource: private_net } + cidr: { get_param: private_net_cidr } + gateway_ip: { get_param: private_net_gateway } + allocation_pools: + - start: { get_param: private_net_pool_start } + end: { get_param: private_net_pool_end } + + router: + type: OS::Neutron::Router + properties: + external_gateway_info: + network: { get_param: public_net } + + router_interface: + type: OS::Neutron::RouterInterface + properties: + router_id: { get_resource: router } + subnet_id: { get_resource: private_subnet } + + rubbos_control: + type: OS::Nova::Server + properties: + name: rubbos_control + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_control_port } + admin_user: ubuntu + + rubbos_control_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_control_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network: { get_param: public_net } + port_id: { get_resource: rubbos_control_port } + + rubbos_httpd: + type: OS::Nova::Server + properties: + name: rubbos_httpd + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_httpd_port } + admin_user: ubuntu + + rubbos_httpd_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_mysql1: + type: OS::Nova::Server + properties: + name: rubbos_mysql1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_mysql1_port } + admin_user: ubuntu + + rubbos_mysql1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_tomcat1: + type: OS::Nova::Server + properties: + name: rubbos_tomcat1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_tomcat1_port } + admin_user: ubuntu + + rubbos_tomcat1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client1: + type: OS::Nova::Server + properties: + name: rubbos_client1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client1_port } + admin_user: ubuntu + + rubbos_client1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client2: + type: OS::Nova::Server + properties: + name: rubbos_client2 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client2_port } + admin_user: ubuntu + + rubbos_client2_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client3: + type: OS::Nova::Server + properties: + name: rubbos_client3 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client3_port } + admin_user: ubuntu + + rubbos_client3_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client4: + type: OS::Nova::Server + properties: + name: rubbos_client4 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client4_port } + admin_user: ubuntu + + rubbos_client4_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_benchmark: + type: OS::Nova::Server + properties: + name: rubbos_benchmark + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_benchmark_port } + admin_user: ubuntu + + rubbos_benchmark_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + server_security_group: + type: OS::Neutron::SecurityGroup + properties: + description: Rubbos group for servers access. + name: rubbos-security-group + rules: [ + {remote_ip_prefix: 0.0.0.0/0, + protocol: tcp, + port_range_min: 1, + port_range_max: 65535}, + {remote_ip_prefix: 0.0.0.0/0, + protocol: udp, + port_range_min: 1, + port_range_max: 65535}, + {remote_ip_prefix: 0.0.0.0/0, + protocol: icmp}] + +outputs: + rubbos_control_private_ip: + description: IP address of rubbos_control in private network + value: { get_attr: [ rubbos_control, first_address ] } + rubbos_control_public_ip: + description: Floating IP address of rubbos_control in public network + value: { get_attr: [ rubbos_control_floating_ip, floating_ip_address ] } + rubbos_httpd_private_ip: + description: IP address of rubbos_httpd in private network + value: { get_attr: [ rubbos_httpd, first_address ] } + rubbos_mysql1_private_ip: + description: IP address of rubbos_mysql1 in private network + value: { get_attr: [ rubbos_mysql1, first_address ] } + rubbos_tomcat1_private_ip: + description: IP address of rubbos_tomcat1 in private network + value: { get_attr: [ rubbos_tomcat1, first_address ] } + rubbos_client1_private_ip: + description: IP address of rubbos_client1 in private network + value: { get_attr: [ rubbos_client1, first_address ] } + rubbos_client2_private_ip: + description: IP address of rubbos_client2 in private network + value: { get_attr: [ rubbos_client2, first_address ] } + rubbos_client3_private_ip: + description: IP address of rubbos_client3 in private network + value: { get_attr: [ rubbos_client3, first_address ] } + rubbos_client4_private_ip: + description: IP address of rubbos_client4 in private network + value: { get_attr: [ rubbos_client4, first_address ] } + rubbos_benchmark_private_ip: + description: IP address of rubbos_benchmark in private network + value: { get_attr: [ rubbos_benchmark, first_address ] } + diff --git a/utils/infra_setup/heat_template/rubbos_heat_template/rubbos_1-2-1_template.yaml b/utils/infra_setup/heat_template/rubbos_heat_template/rubbos_1-2-1_template.yaml new file mode 100755 index 00000000..d76a08cd --- /dev/null +++ b/utils/infra_setup/heat_template/rubbos_heat_template/rubbos_1-2-1_template.yaml @@ -0,0 +1,321 @@ +heat_template_version: 2013-05-23 + +description: > + HOT template to create a new neutron network plus a router to the public + network, and for deploying nine servers into the new network. The template also + assigns floating IP addresses to rubbos_control server so it is routable from the + public network. +parameters: + key_name: + type: string + description: Name of keypair to assign to servers + default: bottlenecks-key + image: + type: string + description: Name of image to use for servers + default: bottlenecks-trusty-server + flavor: + type: string + description: Flavor to use for servers + default: bottlenecks-flavor + public_net: + type: string + description: > + ID or name of public network for which floating IP addresses will be allocated + default: net04_ext + private_net_name: + type: string + description: Name of private network to be created + default: bottlenecks-private + private_net_cidr: + type: string + description: Private network address (CIDR notation) + default: "10.0.10.0/24" + private_net_gateway: + type: string + description: Private network gateway address + default: "10.0.10.1" + private_net_pool_start: + type: string + description: Start of private network IP address allocation pool + default: "10.0.10.2" + private_net_pool_end: + type: string + description: End of private network IP address allocation pool + default: "10.0.10.199" + +resources: + private_net: + type: OS::Neutron::Net + properties: + name: { get_param: private_net_name } + + private_subnet: + type: OS::Neutron::Subnet + properties: + network_id: { get_resource: private_net } + cidr: { get_param: private_net_cidr } + gateway_ip: { get_param: private_net_gateway } + allocation_pools: + - start: { get_param: private_net_pool_start } + end: { get_param: private_net_pool_end } + + router: + type: OS::Neutron::Router + properties: + external_gateway_info: + network: { get_param: public_net } + + router_interface: + type: OS::Neutron::RouterInterface + properties: + router_id: { get_resource: router } + subnet_id: { get_resource: private_subnet } + + rubbos_control: + type: OS::Nova::Server + properties: + name: rubbos_control + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_control_port } + admin_user: ubuntu + + rubbos_control_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_control_floating_ip: + type: OS::Neutron::FloatingIP + properties: + floating_network: { get_param: public_net } + port_id: { get_resource: rubbos_control_port } + + rubbos_httpd: + type: OS::Nova::Server + properties: + name: rubbos_httpd + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_httpd_port } + admin_user: ubuntu + + rubbos_httpd_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_mysql1: + type: OS::Nova::Server + properties: + name: rubbos_mysql1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_mysql1_port } + admin_user: ubuntu + + rubbos_mysql1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_tomcat1: + type: OS::Nova::Server + properties: + name: rubbos_tomcat1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_tomcat1_port } + admin_user: ubuntu + + rubbos_tomcat1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_tomcat2: + type: OS::Nova::Server + properties: + name: rubbos_tomcat2 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_tomcat2_port } + admin_user: ubuntu + + rubbos_tomcat2_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client1: + type: OS::Nova::Server + properties: + name: rubbos_client1 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client1_port } + admin_user: ubuntu + + rubbos_client1_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client2: + type: OS::Nova::Server + properties: + name: rubbos_client2 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client2_port } + admin_user: ubuntu + + rubbos_client2_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client3: + type: OS::Nova::Server + properties: + name: rubbos_client3 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client3_port } + admin_user: ubuntu + + rubbos_client3_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_client4: + type: OS::Nova::Server + properties: + name: rubbos_client4 + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_client4_port } + admin_user: ubuntu + + rubbos_client4_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + rubbos_benchmark: + type: OS::Nova::Server + properties: + name: rubbos_benchmark + image: { get_param: image } + flavor: { get_param: flavor } + key_name: { get_param: key_name } + networks: + - port: { get_resource: rubbos_benchmark_port } + admin_user: ubuntu + + rubbos_benchmark_port: + type: OS::Neutron::Port + properties: + network_id: { get_resource: private_net } + fixed_ips: + - subnet_id: { get_resource: private_subnet } + security_groups: [{ get_resource: server_security_group }] + + server_security_group: + type: OS::Neutron::SecurityGroup + properties: + description: Rubbos group for servers access. + name: rubbos-security-group + rules: [ + {remote_ip_prefix: 0.0.0.0/0, + protocol: tcp, + port_range_min: 1, + port_range_max: 65535}, + {remote_ip_prefix: 0.0.0.0/0, + protocol: udp, + port_range_min: 1, + port_range_max: 65535}, + {remote_ip_prefix: 0.0.0.0/0, + protocol: icmp}] + +outputs: + rubbos_control_private_ip: + description: IP address of rubbos_control in private network + value: { get_attr: [ rubbos_control, first_address ] } + rubbos_control_public_ip: + description: Floating IP address of rubbos_control in public network + value: { get_attr: [ rubbos_control_floating_ip, floating_ip_address ] } + rubbos_httpd_private_ip: + description: IP address of rubbos_httpd in private network + value: { get_attr: [ rubbos_httpd, first_address ] } + rubbos_mysql1_private_ip: + description: IP address of rubbos_mysql1 in private network + value: { get_attr: [ rubbos_mysql1, first_address ] } + rubbos_tomcat1_private_ip: + description: IP address of rubbos_tomcat1 in private network + value: { get_attr: [ rubbos_tomcat1, first_address ] } + rubbos_tomcat2_private_ip: + description: IP address of rubbos_tomcat2 in private network + value: { get_attr: [ rubbos_tomcat2, first_address ] } + rubbos_client1_private_ip: + description: IP address of rubbos_client1 in private network + value: { get_attr: [ rubbos_client1, first_address ] } + rubbos_client2_private_ip: + description: IP address of rubbos_client2 in private network + value: { get_attr: [ rubbos_client2, first_address ] } + rubbos_client3_private_ip: + description: IP address of rubbos_client3 in private network + value: { get_attr: [ rubbos_client3, first_address ] } + rubbos_client4_private_ip: + description: IP address of rubbos_client4 in private network + value: { get_attr: [ rubbos_client4, first_address ] } + rubbos_benchmark_private_ip: + description: IP address of rubbos_benchmark in private network + value: { get_attr: [ rubbos_benchmark, first_address ] } -- cgit 1.2.3-korg