Add ceph cluster nodes, roles
diff --git a/tcp_tests/templates/_heat_environments/eu-cloud.env b/tcp_tests/templates/_heat_environments/eu-cloud.env
index de3bb06..212bf23 100644
--- a/tcp_tests/templates/_heat_environments/eu-cloud.env
+++ b/tcp_tests/templates/_heat_environments/eu-cloud.env
@@ -21,6 +21,9 @@
   log_flavor: system.golden.stacklight.log
   mtr_flavor: system.golden.stacklight.telemetry
   cmp_flavor: system.virtual.openstack.compute
+  cmn_flavor: system.golden.ceph.mon
+  rgw_flavor: system.golden.ceph.rgw
+  osd_flavor: system.virtual.openstack.compute
   kvm_fake_flavor: system.virtual.fake_kvm
   foundation_flavor: system.virtual.foundation
 
@@ -36,5 +39,5 @@
   management_subnet_cfg01_ip: 10.7.0.15
   management_subnet_gateway_ip: 10.7.0.1
   management_subnet_pool_start: 10.7.0.20
-  management_subnet_pool_end: 10.7.0.60
+  management_subnet_pool_end: 10.7.0.90
   salt_master_control_ip: 10.6.0.15
diff --git a/tcp_tests/templates/heat-cicd-pike-contrail41-sl/salt-context-cookiecutter-contrail.yaml b/tcp_tests/templates/heat-cicd-pike-contrail41-sl/salt-context-cookiecutter-contrail.yaml
index 7d58774..92a456d 100644
--- a/tcp_tests/templates/heat-cicd-pike-contrail41-sl/salt-context-cookiecutter-contrail.yaml
+++ b/tcp_tests/templates/heat-cicd-pike-contrail41-sl/salt-context-cookiecutter-contrail.yaml
@@ -239,14 +239,14 @@
   openldap_domain: heat-cicd-pike-contrail41-sl.local
   openldap_enabled: 'True'
   openldap_organisation: ${_param:cluster_name}
-  ceph_enabled: 'False'
+  ceph_enabled: 'True'
   ceph_version: "luminous"
   ceph_hyper_converged: "False"
   ceph_osd_backend: "bluestore"
   ceph_osd_count: "3"
   ceph_osd_node_count: 3
-  ceph_osd_block_db_size: 20
-  ceph_osd_journal_size: 20
+  ceph_osd_block_db_size: 3
+  ceph_osd_journal_size: 3
   ceph_osd_bond_mode: "active-backup"
   ceph_osd_data_partition_prefix: ""
 
@@ -255,13 +255,13 @@
   ceph_cluster_network: "==IPV4_NET_CONTROL_PREFIX==.0/24"
 
 # for 2018.11.0+
-  ceph_osd_single_address_ranges: "==IPV4_NET_CONTROL_PREFIX==.200-==IPV4_NET_CONTROL_PREFIX==.202"
+  ceph_osd_single_address_ranges: "==IPV4_NET_CONTROL_PREFIX==.201-==IPV4_NET_CONTROL_PREFIX==.203"
   ceph_osd_deploy_address_ranges: "==IPV4_NET_ADMIN_PREFIX==.70-==IPV4_NET_ADMIN_PREFIX==.72"
-  ceph_osd_storage_address_ranges: "==IPV4_NET_CONTROL_PREFIX==.200-==IPV4_NET_CONTROL_PREFIX==.202"
-  ceph_osd_backend_address_ranges: "==IPV4_NET_TENANT_PREFIX==.200-==IPV4_NET_TENANT_PREFIX==.202"
+  ceph_osd_storage_address_ranges: "==IPV4_NET_CONTROL_PREFIX==.201-==IPV4_NET_CONTROL_PREFIX==.203"
+  ceph_osd_backend_address_ranges: "==IPV4_NET_TENANT_PREFIX==.201-==IPV4_NET_TENANT_PREFIX==.203"
 
-  ceph_osd_data_disks: "/dev/sdb"
-  ceph_osd_journal_or_block_db_disks: "/dev/sdb"
+  ceph_osd_data_disks: "/dev/vdb"
+  ceph_osd_journal_or_block_db_disks: "/dev/vdb"
   ceph_osd_mode: "separated"
   ceph_osd_deploy_nic: "eth0"
   ceph_osd_primary_first_nic: "eth1"
@@ -301,4 +301,4 @@
   openstack_mysql_x509_enabled: 'True'
   rabbitmq_ssl_enabled: 'True'
   openstack_rabbitmq_x509_enabled: 'True'
-  openstack_internal_protocol: 'http'
+  openstack_internal_protocol: 'https'
diff --git a/tcp_tests/templates/heat-cicd-pike-contrail41-sl/salt-context-environment.yaml b/tcp_tests/templates/heat-cicd-pike-contrail41-sl/salt-context-environment.yaml
index fe4194e..67e4861 100644
--- a/tcp_tests/templates/heat-cicd-pike-contrail41-sl/salt-context-environment.yaml
+++ b/tcp_tests/templates/heat-cicd-pike-contrail41-sl/salt-context-environment.yaml
@@ -4,7 +4,6 @@
       roles:
       - infra_config
       - linux_system_codename_xenial
-      - features_runtest_cfg
       interfaces:
         ens3:
           role: single_static_mgm
@@ -365,11 +364,87 @@
         ens4:
           role: single_ctl
 
+    cmn01:
+      reclass_storage_name: ceph_mon_node01
+      roles:
+      - ceph_mon
+      - linux_system_codename_xenial
+      interfaces:
+        ens3:
+          role: single_dhcp
+        ens4:
+          role: single_ctl
+
+    cmn02:
+      reclass_storage_name: ceph_mon_node02
+      roles:
+      - ceph_mon
+      - linux_system_codename_xenial
+      interfaces:
+        ens3:
+          role: single_dhcp
+        ens4:
+          role: single_ctl
+
+    cmn03:
+      reclass_storage_name: ceph_mon_node03
+      roles:
+      - ceph_mon
+      - linux_system_codename_xenial
+      interfaces:
+        ens3:
+          role: single_dhcp
+        ens4:
+          role: single_ctl
+
+    rgw01:
+      reclass_storage_name: ceph_rgw_node01
+      roles:
+      - ceph_rgw
+      - linux_system_codename_xenial
+      interfaces:
+        ens3:
+          role: single_dhcp
+        ens4:
+          role: single_ctl
+
+    rgw02:
+      reclass_storage_name: ceph_rgw_node02
+      roles:
+      - ceph_rgw
+      - linux_system_codename_xenial
+      interfaces:
+        ens3:
+          role: single_dhcp
+        ens4:
+          role: single_ctl
+
+    rgw03:
+      reclass_storage_name: ceph_rgw_node03
+      roles:
+      - ceph_rgw
+      - linux_system_codename_xenial
+      interfaces:
+        ens3:
+          role: single_dhcp
+        ens4:
+          role: single_ctl
+
+    osd<<count>>:
+      reclass_storage_name: ceph_osd_rack01
+      roles:
+      - ceph_osd
+      - linux_system_codename_xenial
+      interfaces:
+        ens3:
+          role: single_dhcp
+        ens4:
+          role: single_ctl
+
     cmp<<count>>:
       reclass_storage_name: openstack_compute_rack01
       roles:
       - openstack_compute
-      - features_lvm_backend_volume_vdb
       - linux_system_codename_xenial
       interfaces:
         ens3:
diff --git a/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot b/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot
index 6285549..f3f0e12 100644
--- a/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot
+++ b/tcp_tests/templates/heat-cicd-pike-contrail41-sl/underlay.hot
@@ -52,6 +52,12 @@
     type: string
   cmp_flavor:
     type: string
+  cmn_flavor:
+    type: string
+  rgw_flavor:
+    type: string
+  osd_flavor:
+    type: string
   foundation_flavor:
     type: string
 
@@ -352,6 +358,87 @@
         - [ { get_attr: [networks, control_net_prefix] }, '88' ]
       instance_config_host: { get_attr: [cfg01_node, instance_address] }
 
+  ceph_cmn_cluster:
+    type: MCP::MultipleInstance
+    depends_on: [cfg01_node]
+    properties:
+      env_name: { get_param: env_name }
+      mcp_version: { get_param: mcp_version }
+      instance_domain: {get_param: instance_domain}
+      instance01_name: cmn01
+      instance02_name: cmn02
+      instance03_name: cmn03
+      instance_flavor: {get_param: cmn_flavor}
+      network: { get_attr: [networks, network] }
+      underlay_userdata: { get_file: ./underlay-userdata.yaml }
+      instance01_control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [networks, control_net_prefix] }, '66' ]
+      instance02_control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [networks, control_net_prefix] }, '67' ]
+      instance03_control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [networks, control_net_prefix] }, '68' ]
+      instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+  ceph_rgw_cluster:
+    type: MCP::MultipleInstance
+    depends_on: [cfg01_node]
+    properties:
+      env_name: { get_param: env_name }
+      mcp_version: { get_param: mcp_version }
+      instance_domain: {get_param: instance_domain}
+      instance01_name: rgw01
+      instance02_name: rgw02
+      instance03_name: rgw03
+      instance_flavor: {get_param: rgw_flavor}
+      network: { get_attr: [networks, network] }
+      underlay_userdata: { get_file: ./underlay-userdata.yaml }
+      instance01_control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [networks, control_net_prefix] }, '76' ]
+      instance02_control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [networks, control_net_prefix] }, '77' ]
+      instance03_control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [networks, control_net_prefix] }, '78' ]
+      instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
+  ceph_osd_cluster:
+    type: MCP::MultipleInstance
+    depends_on: [cfg01_node]
+    properties:
+      env_name: { get_param: env_name }
+      mcp_version: { get_param: mcp_version }
+      instance_domain: {get_param: instance_domain}
+      instance01_name: osd001
+      instance02_name: osd002
+      instance03_name: osd003
+      instance_flavor: {get_param: osd_flavor}
+      network: { get_attr: [networks, network] }
+      underlay_userdata: { get_file: ./underlay-userdata.yaml }
+      instance01_control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [networks, control_net_prefix] }, '201' ]
+      instance02_control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [networks, control_net_prefix] }, '202' ]
+      instance03_control_net_static_ip:
+        list_join:
+        - '.'
+        - [ { get_attr: [networks, control_net_prefix] }, '203' ]
+      instance_config_host: { get_attr: [cfg01_node, instance_address] }
+
   prx01_virtual:
     type: MCP::SingleInstance
     depends_on: [control_cluster]