blob: cc6b89cd5736465c799141c98dfc2bbe3a30d1ea [file] [log] [blame]
Mateusz Lose2ad0772020-02-27 21:41:54 +01001heat_template_version: queens
2
3parameters:
4
5 metadata:
6 type: json
7 default: {}
8 node_type:
9 type: string
10 key_name:
11 type: string
12 description: Name of keypair to assign to servers
13 image:
14 type: string
15 description: Name of image to use for servers
16 flavor:
17 type: string
18 description: Flavor to use for servers
19 accessible_network:
20 type: string
21 accessible_subnet_id:
22 type: string
23 private_floating_network:
24 type: string
25 private_floating_network_cidr:
26 type: string
27 private_floating_subnet_id:
28 type: string
29 private_floating_interface:
30 type: string
Oleh Hryhorovdccb1cd2020-03-04 15:52:55 +020031 storage_backend_network_cidr:
32 type: string
Mateusz Lose2ad0772020-02-27 21:41:54 +010033 storage_backend_network:
34 type: string
35 storage_backend_subnet_id:
36 type: string
Oleh Hryhorovdccb1cd2020-03-04 15:52:55 +020037 storage_backend_interface:
38 type: string
Mateusz Lose2ad0772020-02-27 21:41:54 +010039 storage_frontend_network:
40 type: string
Oleh Hryhorovdccb1cd2020-03-04 15:52:55 +020041 storage_frontend_network_cidr:
42 type: string
Mateusz Lose2ad0772020-02-27 21:41:54 +010043 storage_frontend_subnet_id:
44 type: string
Oleh Hryhorovdccb1cd2020-03-04 15:52:55 +020045 storage_frontend_interface:
46 type: string
Mateusz Lose2ad0772020-02-27 21:41:54 +010047 host_interface:
48 type: string
49 functions_override:
50 type: string
51 boot_timeout:
52 type: number
53 description: Boot timeout for instance
54 default: 1200
55 ucp_master_host:
56 type: string
57 default: ''
58 public_net_id:
59 type: string
60 docker_ee_release:
61 type: string
62 docker_ee_url:
63 type: string
Vasyl Saienkof9ee1582020-03-02 16:53:41 +020064 hardware_metadata:
65 description: The content of lab metadata.
66 type: string
Mateusz Lose2ad0772020-02-27 21:41:54 +010067
68resources:
69
70 software_config:
71 type: OS::Heat::SoftwareConfig
72 properties:
73 group: ungrouped
74 config:
75 str_replace:
76 template: { get_file: ../scripts/instance_boot.sh }
77 params:
78 $node_type: { get_param: node_type }
79 $wait_condition_notify: { get_attr: [ wait_handle, curl_cli ] }
80 $ucp_license_key: { get_file: ../scripts/license.lic }
81 $docker_ee_url: { get_param: docker_ee_url }
82 $docker_ee_release: { get_param: docker_ee_release }
83 $ucp_master_host: { get_param: ucp_master_host }
84 $node_metadata: { get_param: metadata }
85 $host_interface: { get_param: host_interface }
86 $private_floating_interface: { get_param: private_floating_interface }
87 $private_floating_interface_ip: { get_attr: [private_floating_server_port, fixed_ips, 0, ip_address] }
88 $private_floating_network_cidr: { get_param: private_floating_network_cidr }
89 $functions_override: { get_param: functions_override }
Oleh Hryhorovdccb1cd2020-03-04 15:52:55 +020090 $storage_frontend_interface: { get_param: storage_frontend_interface }
91 $storage_frontend_network_interface_ip: { get_attr: [storage_frontend_server_port, fixed_ips, 0, ip_address] }
92 $storage_frontend_network_cidr: { get_param: storage_frontend_network_cidr }
93 $storage_backend_interface: { get_param: storage_backend_interface }
94 $storage_backend_network_interface_ip: { get_attr: [storage_backend_server_port, fixed_ips, 0, ip_address] }
95 $storage_backend_network_cidr: { get_param: storage_backend_network_cidr }
Mateusz Lose2ad0772020-02-27 21:41:54 +010096
97 server:
98 type: OS::Nova::Server
99 properties:
100 image: { get_param: image }
101 flavor: { get_param: flavor }
102 key_name: { get_param: key_name }
103 availability_zone: nova
104 networks:
105 - port: { get_resource: accessible_server_port }
106 - port: { get_resource: private_floating_server_port }
Mateusz Lose2ad0772020-02-27 21:41:54 +0100107 - port: { get_resource: storage_frontend_server_port }
Oleh Hryhorovdccb1cd2020-03-04 15:52:55 +0200108 - port: { get_resource: storage_backend_server_port }
Mateusz Lose2ad0772020-02-27 21:41:54 +0100109 user_data_format: RAW
110 user_data: { get_resource: software_config }
111 metadata: { get_param: metadata }
112
113 accessible_server_port:
114 type: OS::Neutron::Port
115 properties:
116 network_id: { get_param: accessible_network }
117 port_security_enabled: false
118 fixed_ips:
119 - subnet: { get_param: accessible_subnet_id }
120
121 storage_backend_server_port:
122 type: OS::Neutron::Port
123 properties:
124 network_id: { get_param: storage_backend_network }
125 port_security_enabled: false
126 fixed_ips:
127 - subnet: { get_param: storage_backend_subnet_id }
128
129 storage_frontend_server_port:
130 type: OS::Neutron::Port
131 properties:
132 network_id: { get_param: storage_frontend_network }
133 port_security_enabled: false
134 fixed_ips:
135 - subnet: { get_param: storage_frontend_subnet_id }
136
137 private_floating_server_port:
138 type: OS::Neutron::Port
139 properties:
140 network_id: { get_param: private_floating_network }
141 port_security_enabled: false
142 fixed_ips:
143 - subnet: { get_param: private_floating_subnet_id }
144
145 server_floating_ip:
146 type: OS::Neutron::FloatingIP
147 properties:
148 floating_network_id: { get_param: public_net_id }
149 port_id: { get_resource: accessible_server_port }
150
151 wait_handle:
152 type: OS::Heat::WaitConditionHandle
153 wait_condition:
154 type: OS::Heat::WaitCondition
155 properties:
156 handle: { get_resource: wait_handle }
157 timeout: { get_param: boot_timeout }
158
159outputs:
160 server_private_ip:
161 description: IP address of server in private network
162 value: { get_attr: [server, networks, { get_param: accessible_network}, 0]}
163 server_private_floating_ip:
164 description: IP address of server in private floating network
165 value: { get_attr: [private_floating_server_port, fixed_ips, 0, ip_address] }
166 server_public_ip:
167 description: Floating IP address of server in public network
168 value: { get_attr: [ server_floating_ip, floating_ip_address ] }
Vasyl Saienkof9ee1582020-03-02 16:53:41 +0200169 wc_data:
170 description: Metadata from instance
171 value: { get_attr: [wait_condition, data]}