| # -*- indent-tabs-mode: nil -*- # vi: set expandtab: |
| # |
| # ============LICENSE_START========================================== |
| # org.onap.dcae |
| # =================================================================== |
| # Copyright © 2017 AT&T Intellectual Property. All rights reserved. |
| # =================================================================== |
| # 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. |
| # ============LICENSE_END============================================ |
| # |
| # ECOMP and OpenECOMP are trademarks |
| # and service marks of AT&T Intellectual Property. |
| # |
| |
| tosca_definitions_version: cloudify_dsl_1_3 |
| |
| imports: |
| - http://www.getcloudify.org/spec/cloudify/3.4/types.yaml |
| - http://www.getcloudify.org/spec/openstack-plugin/1.4/plugin.yaml |
| - http://www.getcloudify.org/spec/fabric-plugin/1.4.1/plugin.yaml |
| - types/dns_types.yaml |
| - types/sshkey_types.yaml |
| |
| inputs: |
| centos7image_id: |
| type: string |
| ubuntu1604image_id: |
| type: string |
| flavor_id: |
| type: string |
| security_group: |
| type: string |
| public_net: |
| type: string |
| private_net: |
| type: string |
| openstack: {} |
| keypair: |
| type: string |
| location_prefix: |
| type: string |
| location_domain: |
| type: string |
| key_filename: |
| type: string |
| codesource_url: |
| type: string |
| codesource_version: |
| type: string |
| cname: |
| type: string |
| default: dcae-orcl |
| datacenter: |
| type: string |
| vm_init_clmg_00: |
| type: string |
| default: |- |
| #!/bin/sh |
| set -x |
| DATACENTER= |
| vm_init_clmg_01: |
| type: string |
| default: | |
| CONSULVER=0.8.3 |
| CONSULNAME=consul_${CONSULVER}_linux_amd64 |
| MYIP=`curl -Ss http://169.254.169.254/2009-04-04/meta-data/local-ipv4` |
| MYNAME=`hostname` |
| if [ ! -z "$(echo $MYNAME |grep '.')" ]; then MYNAME="$(echo $MYNAME | cut -f1 -d '.')"; fi |
| echo >>/etc/hosts |
| echo $MYIP $MYNAME >>/etc/hosts |
| mkdir -p /opt/consul/config /opt/consul/data /opt/consul/bin |
| yum install -y unzip |
| # Download Consul |
| curl -Ss https://releases.hashicorp.com/consul/${CONSULVER}/${CONSULNAME}.zip > ${CONSULNAME}.zip |
| unzip -d /opt/consul/bin ${CONSULNAME}.zip |
| rm ${CONSULNAME}.zip |
| chmod +x /opt/consul/bin/consul |
| cat <<EOF > /opt/consul/config/consul.json |
| { |
| "bind_addr" : "0.0.0.0", |
| "client_addr" : "0.0.0.0", |
| "data_dir" : "/opt/consul/data", |
| "datacenter": "$DATACENTER", |
| "rejoin_after_leave": true, |
| "http_api_response_headers": { |
| "Access-Control-Allow-Origin" : "*" |
| }, |
| "server": false, |
| "ui": false, |
| "enable_syslog": true, |
| "log_level": "info" |
| } |
| EOF |
| cat <<EOF > /lib/systemd/system/consul.service |
| [Unit] |
| Description=Consul |
| Requires=network-online.target |
| After=network.target |
| [Service] |
| Type=simple |
| ExecStart=/opt/consul/bin/consul agent -config-dir=/opt/consul/config |
| ExecReload=/bin/kill -HUP \$MAINPID |
| [Install] |
| WantedBy=multi-user.target |
| EOF |
| systemctl enable consul |
| systemctl start consul |
| yum install -y python-psycopg2 |
| |
| 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 } |
| openstack_config: &open_conf |
| get_input: openstack |
| private_net: |
| type: cloudify.openstack.nodes.Network |
| properties: |
| use_external_resource: True |
| resource_id: { get_input: private_net } |
| openstack_config: *open_conf |
| security_group: |
| type: cloudify.openstack.nodes.SecurityGroup |
| properties: |
| use_external_resource: True |
| resource_id: { get_input: security_group } |
| openstack_config: *open_conf |
| fixedip_vm00: |
| type: cloudify.openstack.nodes.Port |
| properties: |
| port: |
| extra_dhcp_opts: |
| - opt_name: 'domain-name' |
| opt_value: { get_input: location_domain } |
| openstack_config: *open_conf |
| relationships: |
| - type: cloudify.relationships.contained_in |
| target: private_net |
| floatingip_vm00: |
| type: cloudify.openstack.nodes.FloatingIP |
| properties: |
| openstack_config: *open_conf |
| interfaces: |
| cloudify.interfaces.lifecycle: |
| create: |
| inputs: |
| args: |
| floating_network_name: { get_input: public_net } |
| dns_vm00: |
| type: ccsdk.nodes.dns.arecord |
| properties: |
| fqdn: { concat: [ { get_input: location_prefix }, 'orcl00.', { get_input: location_domain } ] } |
| openstack: *open_conf |
| interfaces: |
| cloudify.interfaces.lifecycle: |
| create: |
| inputs: |
| args: |
| ip_addresses: |
| - { get_attribute: [ floatingip_vm00, floating_ip_address ] } |
| relationships: |
| - type: cloudify.relationships.depends_on |
| target: floatingip_vm00 |
| dns_cm: |
| type: ccsdk.nodes.dns.arecord |
| properties: |
| fqdn: { concat: [ 'cloudify-manager-', { get_input: datacenter}, '.', { get_input: location_domain } ] } |
| openstack: *open_conf |
| interfaces: |
| cloudify.interfaces.lifecycle: |
| create: |
| inputs: |
| args: |
| ip_addresses: |
| - { get_attribute: [ floatingip_vm00, floating_ip_address ] } |
| relationships: |
| - type: cloudify.relationships.depends_on |
| target: floatingip_vm00 |
| dns_cname: |
| type: ccsdk.nodes.dns.cnamerecord |
| properties: |
| fqdn: { concat: [ { get_input: cname }, '.', { get_input: location_domain } ] } |
| openstack: *open_conf |
| interfaces: |
| cloudify.interfaces.lifecycle: |
| create: |
| inputs: |
| args: |
| cname: { get_property: [ dns_vm00, fqdn ] } |
| relationships: |
| - type: cloudify.relationships.depends_on |
| target: dns_vm00 |
| host_vm00: |
| type: cloudify.openstack.nodes.Server |
| properties: |
| install_agent: false |
| image: { get_input: centos7image_id } |
| flavor: { get_input: flavor_id } |
| management_network_name: { get_input: private_net } |
| openstack_config: *open_conf |
| interfaces: |
| cloudify.interfaces.lifecycle: |
| create: |
| inputs: |
| args: |
| name: { concat: [ { get_input: location_prefix }, 'orcl00' ] } |
| userdata: |
| concat: |
| - { get_input: vm_init_clmg_00 } |
| - { get_input: datacenter } |
| - |+ |
| |
| - { get_input: vm_init_clmg_01 } |
| relationships: |
| - type: cloudify.openstack.server_connected_to_port |
| target: fixedip_vm00 |
| - type: cloudify.openstack.server_connected_to_security_group |
| target: security_group |
| - type: cloudify.openstack.server_connected_to_floating_ip |
| target: floatingip_vm00 |
| - type: cloudify.openstack.server_connected_to_keypair |
| target: key_pair |
| - type: cloudify.relationships.depends_on |
| target: dns_vm00 |
| - type: cloudify.relationships.depends_on |
| target: dns_cm |
| |
| outputs: |
| public_ip: |
| value: { get_attribute: [floatingip_vm00, floating_ip_address] } |