Merge "updated version of POMBA images"
[integration.git] / deployment / heat / onap-oom / onap-oom.yaml
index 867f242..f25bf6f 100644 (file)
@@ -31,26 +31,71 @@ parameters:
     type: string
     description: VM flavor for k8s hosts
 
+  etcd_vm_flavor:
+    type: string
+    description: VM flavor for etcd hosts
+
+  orch_vm_flavor:
+    type: string
+    description: VM flavor for orch hosts
+
   integration_override_yaml:
     type: string
     description: Content for integration_override.yaml
 
-  gerrit_branch:
+  integration_gerrit_branch:
+    type: string
+    default: "master"
+
+  integration_gerrit_refspec:
+    type: string
+    default: "refs/heads/master"
+
+  oom_gerrit_branch:
     type: string
     default: "master"
 
-  gerrit_refspec:
+  oom_gerrit_refspec:
     type: string
     default: "refs/heads/master"
 
   docker_manifest:
     type: string
-    default: "docker-manifest.csv"
+    default: ""
 
   key_name:
     type: string
     default: "onap_key"
 
+  docker_version:
+    type: string
+    default: "17.03.2"
+
+  rancher_version:
+    type: string
+    default: "1.6.22"
+
+  rancher_agent_version:
+    type: string
+    default: "1.2.11"
+
+  kubectl_version:
+    type: string
+    default: "1.11.2"
+
+  helm_version:
+    type: string
+    default: "2.9.1"
+
+  helm_deploy_delay:
+    type: string
+    default: "2m"
+
+  use_ramdisk:
+    type: string
+    description: Set to "true" if you want to use a RAM disk for /dockerdata-nfs/.
+    default: "false"
+
 resources:
   random-str:
     type: OS::Heat::RandomString
@@ -83,6 +128,10 @@ resources:
         - protocol: tcp
           port_range_min: 1
           port_range_max: 65535
+        # Protocols used for vLB/vDNS use case
+        - protocol: 47
+        - protocol: 53
+        - protocol: 132
 
 
   # ONAP management private network
@@ -110,6 +159,8 @@ resources:
   router:
     type: OS::Neutron::Router
     properties:
+      name:
+        list_join: ['-', [{ get_param: 'OS::stack_name' }, 'router']]
       external_gateway_info:
         network: { get_param: public_net_id }
 
@@ -136,7 +187,8 @@ resources:
   rancher_vm:
     type: OS::Nova::Server
     properties:
-      name: rancher
+      name:
+        list_join: ['-', [{ get_param: 'OS::stack_name' }, 'rancher']]
       image: { get_param: ubuntu_1604_image }
       flavor: { get_param: rancher_vm_flavor }
       key_name: { get_param: key_name }
@@ -153,29 +205,127 @@ resources:
             __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
             __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
             __integration_override_yaml__: { get_param: integration_override_yaml }
-            __gerrit_branch__: { get_param: gerrit_branch }
-            __gerrit_refspec__: { get_param: gerrit_refspec }
+            __integration_gerrit_branch__: { get_param: integration_gerrit_branch }
+            __integration_gerrit_refspec__: { get_param: integration_gerrit_refspec }
+            __oom_gerrit_branch__: { get_param: oom_gerrit_branch }
+            __oom_gerrit_refspec__: { get_param: oom_gerrit_refspec }
             __docker_manifest__: { get_param: docker_manifest }
+            __docker_version__: { get_param: docker_version }
+            __rancher_version__: { get_param: rancher_version }
+            __rancher_agent_version__: { get_param: rancher_agent_version }
+            __kubectl_version__: { get_param: kubectl_version }
+            __helm_version__: { get_param: helm_version }
+            __helm_deploy_delay__: { get_param: helm_deploy_delay }
+            __use_ramdisk__: { get_param: use_ramdisk }
             __public_net_id__: { get_param: public_net_id }
             __oam_network_cidr__: { get_param: oam_network_cidr }
             __oam_network_id__: { get_resource: oam_network }
             __oam_subnet_id__: { get_resource: oam_subnet }
-            __k8s_1_vm_ip__: { get_attr: [k8s_1_floating_ip, floating_ip_address] }
+            __sec_group__: { get_resource: onap_sg }
+            __k8s_01_vm_ip__: { get_attr: [k8s_01_floating_ip, floating_ip_address] }
             __k8s_vm_ips__: [
-              get_attr: [k8s_1_floating_ip, floating_ip_address],
-              get_attr: [k8s_2_floating_ip, floating_ip_address],
-              get_attr: [k8s_3_floating_ip, floating_ip_address],
-              get_attr: [k8s_4_floating_ip, floating_ip_address],
-              get_attr: [k8s_5_floating_ip, floating_ip_address],
+              get_attr: [k8s_01_floating_ip, floating_ip_address],
+              get_attr: [k8s_02_floating_ip, floating_ip_address],
+              get_attr: [k8s_03_floating_ip, floating_ip_address],
+              get_attr: [k8s_04_floating_ip, floating_ip_address],
+              get_attr: [k8s_05_floating_ip, floating_ip_address],
+              get_attr: [k8s_06_floating_ip, floating_ip_address],
+              get_attr: [k8s_07_floating_ip, floating_ip_address],
+              get_attr: [k8s_08_floating_ip, floating_ip_address],
+              get_attr: [k8s_09_floating_ip, floating_ip_address],
+              get_attr: [k8s_10_floating_ip, floating_ip_address],
+              get_attr: [k8s_11_floating_ip, floating_ip_address],
+              get_attr: [k8s_12_floating_ip, floating_ip_address],
             ]
             __k8s_private_ips__: [
-              get_attr: [k8s_1_floating_ip, fixed_ip_address],
-              get_attr: [k8s_2_floating_ip, fixed_ip_address],
-              get_attr: [k8s_3_floating_ip, fixed_ip_address],
-              get_attr: [k8s_4_floating_ip, fixed_ip_address],
-              get_attr: [k8s_5_floating_ip, fixed_ip_address],
+              get_attr: [k8s_01_floating_ip, fixed_ip_address],
+              get_attr: [k8s_02_floating_ip, fixed_ip_address],
+              get_attr: [k8s_03_floating_ip, fixed_ip_address],
+              get_attr: [k8s_04_floating_ip, fixed_ip_address],
+              get_attr: [k8s_05_floating_ip, fixed_ip_address],
+              get_attr: [k8s_06_floating_ip, fixed_ip_address],
+              get_attr: [k8s_07_floating_ip, fixed_ip_address],
+              get_attr: [k8s_08_floating_ip, fixed_ip_address],
+              get_attr: [k8s_09_floating_ip, fixed_ip_address],
+              get_attr: [k8s_10_floating_ip, fixed_ip_address],
+              get_attr: [k8s_11_floating_ip, fixed_ip_address],
+              get_attr: [k8s_12_floating_ip, fixed_ip_address],
             ]
-  k8s_1_private_port:
+  k8s_01_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  k8s_01_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: k8s_01_private_port }
+
+  k8s_01_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '01' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: k8s_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: k8s_01_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  k8s_02_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  k8s_02_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: k8s_02_private_port }
+
+  k8s_02_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '02' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: k8s_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: k8s_02_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  k8s_03_private_port:
     type: OS::Neutron::Port
     properties:
       network: { get_resource: oam_network }
@@ -183,33 +333,36 @@ resources:
       security_groups:
       - { get_resource: onap_sg }
 
-  k8s_1_floating_ip:
+  k8s_03_floating_ip:
     type: OS::Neutron::FloatingIP
     properties:
       floating_network_id: { get_param: public_net_id }
-      port_id: { get_resource: k8s_1_private_port }
+      port_id: { get_resource: k8s_03_private_port }
 
-  k8s_1_vm:
+  k8s_03_vm:
     type: OS::Nova::Server
     properties:
-      name: k8s_1
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '03' ] ]
       image: { get_param: ubuntu_1604_image }
       flavor: { get_param: k8s_vm_flavor }
       key_name: { get_param: key_name }
       networks:
-      - port: { get_resource: k8s_1_private_port }
+      - port: { get_resource: k8s_03_private_port }
       user_data_format: RAW
       user_data:
         str_replace:
           params:
             __docker_proxy__: { get_param: docker_proxy }
             __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
             __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
             __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
           template:
             get_file: k8s_vm_entrypoint.sh
 
-  k8s_2_private_port:
+  k8s_04_private_port:
     type: OS::Neutron::Port
     properties:
       network: { get_resource: oam_network }
@@ -217,33 +370,36 @@ resources:
       security_groups:
       - { get_resource: onap_sg }
 
-  k8s_2_floating_ip:
+  k8s_04_floating_ip:
     type: OS::Neutron::FloatingIP
     properties:
       floating_network_id: { get_param: public_net_id }
-      port_id: { get_resource: k8s_2_private_port }
+      port_id: { get_resource: k8s_04_private_port }
 
-  k8s_2_vm:
+  k8s_04_vm:
     type: OS::Nova::Server
     properties:
-      name: k8s_2
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '04' ] ]
       image: { get_param: ubuntu_1604_image }
       flavor: { get_param: k8s_vm_flavor }
       key_name: { get_param: key_name }
       networks:
-      - port: { get_resource: k8s_2_private_port }
+      - port: { get_resource: k8s_04_private_port }
       user_data_format: RAW
       user_data:
         str_replace:
           params:
             __docker_proxy__: { get_param: docker_proxy }
             __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
             __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
             __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
           template:
             get_file: k8s_vm_entrypoint.sh
 
-  k8s_3_private_port:
+  k8s_05_private_port:
     type: OS::Neutron::Port
     properties:
       network: { get_resource: oam_network }
@@ -251,33 +407,36 @@ resources:
       security_groups:
       - { get_resource: onap_sg }
 
-  k8s_3_floating_ip:
+  k8s_05_floating_ip:
     type: OS::Neutron::FloatingIP
     properties:
       floating_network_id: { get_param: public_net_id }
-      port_id: { get_resource: k8s_3_private_port }
+      port_id: { get_resource: k8s_05_private_port }
 
-  k8s_3_vm:
+  k8s_05_vm:
     type: OS::Nova::Server
     properties:
-      name: k8s_3
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '05' ] ]
       image: { get_param: ubuntu_1604_image }
       flavor: { get_param: k8s_vm_flavor }
       key_name: { get_param: key_name }
       networks:
-      - port: { get_resource: k8s_3_private_port }
+      - port: { get_resource: k8s_05_private_port }
       user_data_format: RAW
       user_data:
         str_replace:
           params:
             __docker_proxy__: { get_param: docker_proxy }
             __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
             __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
             __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
           template:
             get_file: k8s_vm_entrypoint.sh
 
-  k8s_4_private_port:
+  k8s_06_private_port:
     type: OS::Neutron::Port
     properties:
       network: { get_resource: oam_network }
@@ -285,33 +444,36 @@ resources:
       security_groups:
       - { get_resource: onap_sg }
 
-  k8s_4_floating_ip:
+  k8s_06_floating_ip:
     type: OS::Neutron::FloatingIP
     properties:
       floating_network_id: { get_param: public_net_id }
-      port_id: { get_resource: k8s_4_private_port }
+      port_id: { get_resource: k8s_06_private_port }
 
-  k8s_4_vm:
+  k8s_06_vm:
     type: OS::Nova::Server
     properties:
-      name: k8s_4
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '06' ] ]
       image: { get_param: ubuntu_1604_image }
       flavor: { get_param: k8s_vm_flavor }
       key_name: { get_param: key_name }
       networks:
-      - port: { get_resource: k8s_4_private_port }
+      - port: { get_resource: k8s_06_private_port }
       user_data_format: RAW
       user_data:
         str_replace:
           params:
             __docker_proxy__: { get_param: docker_proxy }
             __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
             __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
             __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
           template:
             get_file: k8s_vm_entrypoint.sh
 
-  k8s_5_private_port:
+  k8s_07_private_port:
     type: OS::Neutron::Port
     properties:
       network: { get_resource: oam_network }
@@ -319,29 +481,402 @@ resources:
       security_groups:
       - { get_resource: onap_sg }
 
-  k8s_5_floating_ip:
+  k8s_07_floating_ip:
     type: OS::Neutron::FloatingIP
     properties:
       floating_network_id: { get_param: public_net_id }
-      port_id: { get_resource: k8s_5_private_port }
+      port_id: { get_resource: k8s_07_private_port }
 
-  k8s_5_vm:
+  k8s_07_vm:
     type: OS::Nova::Server
     properties:
-      name: k8s_5
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '07' ] ]
       image: { get_param: ubuntu_1604_image }
       flavor: { get_param: k8s_vm_flavor }
       key_name: { get_param: key_name }
       networks:
-      - port: { get_resource: k8s_5_private_port }
+      - port: { get_resource: k8s_07_private_port }
       user_data_format: RAW
       user_data:
         str_replace:
           params:
             __docker_proxy__: { get_param: docker_proxy }
             __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
             __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
             __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  k8s_08_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  k8s_08_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: k8s_08_private_port }
+
+  k8s_08_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '08' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: k8s_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: k8s_08_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  k8s_09_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  k8s_09_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: k8s_09_private_port }
+
+  k8s_09_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '09' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: k8s_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: k8s_09_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  k8s_10_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  k8s_10_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: k8s_10_private_port }
+
+  k8s_10_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '10' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: k8s_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: k8s_10_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  k8s_11_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  k8s_11_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: k8s_11_private_port }
+
+  k8s_11_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '11' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: k8s_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: k8s_11_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  k8s_12_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  k8s_12_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: k8s_12_private_port }
+
+  k8s_12_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'k8s', '12' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: k8s_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: k8s_12_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'compute'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  etcd_1_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  etcd_1_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: etcd_1_private_port }
+
+  etcd_1_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'etcd', '1' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: etcd_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: etcd_1_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'etcd'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  etcd_2_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  etcd_2_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: etcd_2_private_port }
+
+  etcd_2_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'etcd', '2' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: etcd_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: etcd_2_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'etcd'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  etcd_3_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  etcd_3_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: etcd_3_private_port }
+
+  etcd_3_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'etcd', '3' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: etcd_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: etcd_3_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'etcd'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  orch_1_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  orch_1_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: orch_1_private_port }
+
+  orch_1_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'orch', '1' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: orch_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: orch_1_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'orchestration'
+          template:
+            get_file: k8s_vm_entrypoint.sh
+
+  orch_2_private_port:
+    type: OS::Neutron::Port
+    properties:
+      network: { get_resource: oam_network }
+      fixed_ips: [{"subnet": { get_resource: oam_subnet }}]
+      security_groups:
+      - { get_resource: onap_sg }
+
+  orch_2_floating_ip:
+    type: OS::Neutron::FloatingIP
+    properties:
+      floating_network_id: { get_param: public_net_id }
+      port_id: { get_resource: orch_2_private_port }
+
+  orch_2_vm:
+    type: OS::Nova::Server
+    properties:
+      name:
+        list_join: ['-', [ { get_param: 'OS::stack_name' }, 'orch', '2' ] ]
+      image: { get_param: ubuntu_1604_image }
+      flavor: { get_param: orch_vm_flavor }
+      key_name: { get_param: key_name }
+      networks:
+      - port: { get_resource: orch_2_private_port }
+      user_data_format: RAW
+      user_data:
+        str_replace:
+          params:
+            __docker_proxy__: { get_param: docker_proxy }
+            __apt_proxy__: { get_param: apt_proxy }
+            __docker_version__: { get_param: docker_version }
+            __rancher_ip_addr__: { get_attr: [rancher_floating_ip, floating_ip_address] }
+            __rancher_private_ip_addr__: { get_attr: [rancher_floating_ip, fixed_ip_address] }
+            __host_label__: 'orchestration'
           template:
             get_file: k8s_vm_entrypoint.sh
 
@@ -350,23 +885,51 @@ outputs:
     description: The IP address of the rancher instance
     value: { get_attr: [rancher_floating_ip, floating_ip_address] }
 
-  k8s_1_vm_ip:
-    description: The IP address of the k8s_1 instance
-    value: { get_attr: [k8s_1_floating_ip, floating_ip_address] }
+  k8s_01_vm_ip:
+    description: The IP address of the k8s_01 instance
+    value: { get_attr: [k8s_01_floating_ip, floating_ip_address] }
+
+  k8s_02_vm_ip:
+    description: The IP address of the k8s_02 instance
+    value: { get_attr: [k8s_02_floating_ip, floating_ip_address] }
+
+  k8s_03_vm_ip:
+    description: The IP address of the k8s_03 instance
+    value: { get_attr: [k8s_03_floating_ip, floating_ip_address] }
+
+  k8s_04_vm_ip:
+    description: The IP address of the k8s_04 instance
+    value: { get_attr: [k8s_04_floating_ip, floating_ip_address] }
+
+  k8s_05_vm_ip:
+    description: The IP address of the k8s_05 instance
+    value: { get_attr: [k8s_05_floating_ip, floating_ip_address] }
+
+  k8s_06_vm_ip:
+    description: The IP address of the k8s_06 instance
+    value: { get_attr: [k8s_06_floating_ip, floating_ip_address] }
+
+  k8s_07_vm_ip:
+    description: The IP address of the k8s_07 instance
+    value: { get_attr: [k8s_07_floating_ip, floating_ip_address] }
+
+  k8s_08_vm_ip:
+    description: The IP address of the k8s_08 instance
+    value: { get_attr: [k8s_08_floating_ip, floating_ip_address] }
 
-  k8s_2_vm_ip:
-    description: The IP address of the k8s_2 instance
-    value: { get_attr: [k8s_2_floating_ip, floating_ip_address] }
+  k8s_09_vm_ip:
+    description: The IP address of the k8s_09 instance
+    value: { get_attr: [k8s_09_floating_ip, floating_ip_address] }
 
-  k8s_3_vm_ip:
-    description: The IP address of the k8s_3 instance
-    value: { get_attr: [k8s_3_floating_ip, floating_ip_address] }
+  k8s_10_vm_ip:
+    description: The IP address of the k8s_10 instance
+    value: { get_attr: [k8s_10_floating_ip, floating_ip_address] }
 
-  k8s_4_vm_ip:
-    description: The IP address of the k8s_4 instance
-    value: { get_attr: [k8s_4_floating_ip, floating_ip_address] }
+  k8s_11_vm_ip:
+    description: The IP address of the k8s_11 instance
+    value: { get_attr: [k8s_11_floating_ip, floating_ip_address] }
 
-  k8s_5_vm_ip:
-    description: The IP address of the k8s_5 instance
-    value: { get_attr: [k8s_5_floating_ip, floating_ip_address] }
+  k8s_12_vm_ip:
+    description: The IP address of the k8s_12 instance
+    value: { get_attr: [k8s_12_floating_ip, floating_ip_address] }