From ec1754488a5ae90332804fe4a87212ca98e1cf5c Mon Sep 17 00:00:00 2001 From: Hong Guan Date: Mon, 20 Nov 2017 16:46:51 -0500 Subject: [PATCH] Deploy appc on VMs by TOSCA Change-Id: Ic14e65350482641f0b4e71960f3eadf543e27504 IssueID: OOM-78 Signed-off-by: Guan, Hong (hg4105) --- TOSCA/VM/appc/appc.yaml | 261 ++++++++++++++++++++++++++++++++++++++++++ TOSCA/VM/appc/scripts/appc.sh | 58 ++++++++++ 2 files changed, 319 insertions(+) create mode 100644 TOSCA/VM/appc/appc.yaml create mode 100644 TOSCA/VM/appc/scripts/appc.sh diff --git a/TOSCA/VM/appc/appc.yaml b/TOSCA/VM/appc/appc.yaml new file mode 100644 index 0000000000..ddc78f81d4 --- /dev/null +++ b/TOSCA/VM/appc/appc.yaml @@ -0,0 +1,261 @@ +########################################################### +# This Blueprint installs ONAP appc on Openstack +########################################################### + +tosca_definitions_version: cloudify_dsl_1_3 + +description: > + This blueprint creates a ONAP APP-C + +imports: + - http://www.getcloudify.org/spec/cloudify/4.1/types.yaml + - http://cloudify.co/spec/openstack-plugin/2.2.0/plugin.yaml + - http://cloudify.co/spec/fabric-plugin/1.5/plugin.yaml + - http://www.getcloudify.org/spec/diamond-plugin/1.3.3/plugin.yaml + +inputs: + nexus_repo: + type: string + default: https://nexus.onap.org/content/sites/raw + + docker_repo: + type: string + default: nexus3.onap.org:10001 + + nexus_username: + type: string + default: docker + + nexus_password: + type: string + default: docker + + artifacts_version: + type: string + default: 1.1.0-SNAPSHOT + + dns_ip: + type: string + + cloud_env: + type: string + default: openstack + + docker_version: + type: string + default: v1.2.0 + + gerrit_branch: + type: string + default: master + + external_dns: + type: string + + dmaap_topic: + type: string + default: AUTO + + appc_repo: + type: string + default: http://gerrit.onap.org/r/appc/deployment.git + + vm_instancename: + type: string + + image: + description: | + A Ubuntu 14.04 image, along with the usual + type: string + default: Ubuntu 14.04 LTS Generic + + flavor: + description: > + A machine type with more than 2 CPUs, 4096 GB RAM, and 8 GB of disk space. + You might want to use 4 CPUs, 8192 MB RAM for the master. + type: string + default: m1.xlarge + + ssh_user: + description: | + User for connecting to agent VM + type: string + default: ubuntu + + security_group: + description: openstack security_group + type: string + + keypair_name: + description: | + OpenStack keypair name + type: string + + key_filename: + type: string + + external_network: + type: string + + app_subnet: + type: string + + + openstack_username: + type: string + description: username to authenticate to OpenStack + + openstack_password: + type: string + description: OpenStack tenant password for openstack_username user + + openstack_tenant_name: + type: string + description: OpenStack tenant for VM deploy + + openstack_auth_url: + type: string + description: Authentication URL for OpenStack + + openstack_region: + type: string + description: OpenStack region + + dgbuilder_docker: + type: string + default: v0.1.0 + +dsl_definitions: + openstack_credentials: &openstack_credentials + username: { get_input: openstack_username } + password: { get_input: openstack_password } + tenant_name: { get_input: openstack_tenant_name } + auth_url: { get_input: openstack_auth_url } + region: { get_input: openstack_region } + +node_templates: + + key_pair: + type: cloudify.openstack.nodes.KeyPair + properties: + private_key_path: { get_input: key_filename } + use_external_resource: true + resource_id: { get_input: keypair_name } + openstack_config: *openstack_credentials + + private_net: + type: cloudify.openstack.nodes.Network + properties: + use_external_resource: true + resource_id: { get_input: app_subnet } + openstack_config: *openstack_credentials + + external_network: + type: cloudify.openstack.nodes.Network + properties: + openstack_config: *openstack_credentials + use_external_resource: true + resource_id: { get_input: external_network} + + app_security_group: + type: cloudify.openstack.nodes.SecurityGroup + properties: + openstack_config: *openstack_credentials + use_external_resource: true + resource_id: { get_input: security_group } + + VM_001_fixed_ip: + type: cloudify.openstack.nodes.Port + properties: + openstack_config: *openstack_credentials + relationships: + - type: cloudify.relationships.contained_in + target: private_net + - type: cloudify.openstack.port_connected_to_security_group + target: app_security_group + + VM_001_floating_ip: + type: cloudify.openstack.nodes.FloatingIP + properties: + openstack_config: *openstack_credentials + interfaces: + cloudify.interfaces.lifecycle: + create: + inputs: + args: + floating_network_name: { get_input: external_network } + + VM_001: + type: cloudify.openstack.nodes.Server + properties: + openstack_config: *openstack_credentials + install_agent: false + image: { get_input: image } + flavor: { get_input: flavor } + resource_id: { get_input: vm_instancename } + management_network_name: { get_input: app_subnet } + ip: { get_attribute: [VM_001_floating_ip, floating_ip_address] } + relationships: + - type: cloudify.openstack.server_connected_to_floating_ip + target: VM_001_floating_ip + - type: cloudify.openstack.server_connected_to_keypair + target: key_pair + - type: cloudify.openstack.server_connected_to_port + target: VM_001_fixed_ip + + + app_001: + type: cloudify.nodes.SoftwareComponent + properties: + interfaces: + cloudify.interfaces.lifecycle: + start: + implementation: fabric.fabric_plugin.tasks.run_script + inputs: + script_path: scripts/appc.sh + use_sudo: true + process: + args: + [{ get_attribute: [VM_001_floating_ip, floating_ip_address]}, + { get_attribute: [VM_001_fixed_ip, fixed_ip_address]}, + { get_input: nexus_repo }, + { get_input: docker_repo}, + { get_input: nexus_username }, + { get_input: nexus_password }, + { get_input: artifacts_version }, + { get_input: dns_ip}, + { get_input: gerrit_branch }, + openstack, + { get_input: external_dns}, + { get_input: dmaap_topic}, + { get_input: openstack_username}, + { get_input: openstack_tenant_name}, + { get_input: openstack_password}, + { get_input: openstack_region}, + { get_input: openstack_auth_url}, + { get_input: appc_repo}, + { get_input: docker_version }, + { get_input: dgbuilder_docker}] + fabric_env: + host_string: { get_attribute: [VM_001_floating_ip, floating_ip_address]} + user: { get_input: ssh_user } + key_filename: { get_input: key_filename } + relationships: + - type: cloudify.relationships.contained_in + target: VM_001 + - type: cloudify.relationships.depends_on + target: VM_001_floating_ip + +outputs: + ONAP_Appc: + description: informations about app-c + value: + ip: { get_attribute: [VM_001_floating_ip, floating_ip_address] } + + + + + + + + diff --git a/TOSCA/VM/appc/scripts/appc.sh b/TOSCA/VM/appc/scripts/appc.sh new file mode 100644 index 0000000000..e89f1b0d85 --- /dev/null +++ b/TOSCA/VM/appc/scripts/appc.sh @@ -0,0 +1,58 @@ +#!/bin/sh + +# +PUBIP="$1" +PVTIP="$2" +NEXUS_REPO="$3" +DOCKER_REPO="$4" +NEXUS_USERNAME="$5" +NEXUS_PASSWORD="$6" +ARTIFACTS_VERSION="$7" +DNS_IP="$8" +GERRIT_BRANCH="$9" +CLOUD_ENV="$10" +EXETERNAL_DNS="$11" +DMAAP_TOPIC="$12" +OPENSTACK_USERNAME="$13" +TENANT_ID="$14" +OPENSTACK_API_KEY="$15" +OPENSTACK_REGION="$16" +KEYSTONE="$17" +APPC_REPO="$18" +DOCKER_VERSION="$19" +DGBUILDER_DOCKER="$20" + +export HOSTNAME=`hostname` +echo 127.0.1.1 $HOSTNAME >>/etc/hosts +echo $PVTIP $HOSTNAME >>/etc/hosts +echo $PUBIP $HOSTNAME >>/etc/hosts + + +mkdir /opt/config +chmod 777 /opt/config +echo $PUBIP > /opt/config/public_ip.txt +echo $NEXUS_REPO > /opt/config/nexus_repo.txt +echo $DOCKER_REPO > /opt/config/nexus_docker_repo.txt +echo $NEXUS_USERNAME > /opt/config/nexus_username.txt +echo $NEXUS_PASSWORD > /opt/config/nexus_password.txt +echo $DMAAP_TOPIC > /opt/config/dmaap_topic.txt +echo $ARTIFACTS_VERSION > /opt/config/artifacts_version.txt +echo $DNS_IP > /opt/config/dns_ip_addr.txt +echo $DOCKER_VERSION > /opt/config/docker_version.txt +echo $GERRIT_BRANCH > /opt/config/gerrit_branch.txt +echo $DGBUILDER_DOCKER > /opt/config/dgbuilder_version.txt +echo $CLOUD_ENV > /opt/config/cloud_env.txt +echo $EXETERNAL_DNS > /opt/config/external_dns.txt +echo $APPC_REPO > /opt/config/remote_repo.txt +echo $OPENSTACK_USERNAME > /opt/config/openstack_username.txt +echo $TENANT_ID > /opt/config/tenant_id.txt +echo $OPENSTACK_API_KEY > /opt/config/openstack_api_key.txt +echo $OPENSTACK_REGION > /opt/config/openstack_region.txt +echo $KEYSTONE > /opt/config/keystone.txt + +touch /opt/appc_install.sh +chmod 777 /opt/appc_install.sh +curl -k $NEXUS_REPO/org.onap.demo/boot/$ARTIFACTS_VERSION/appc_install.sh -o /opt/appc_install.sh +cd /opt +chmod +x appc_install.sh +/opt/appc_install.sh > appc_install.log 2>&1 \ No newline at end of file -- 2.16.6