1 .. Licensed under a Creative Commons Attribution 4.0 International License.
2 .. http://creativecommons.org/licenses/by/4.0
3 .. Copyright 2017 AT&T Intellectual Property. All rights reserved.
5 .. _ONAP Heat Orchestration Templates Overview:
7 ONAP Heat Orchestration Templates Overview
8 -----------------------------------------------
10 ONAP supports a modular Heat Orchestration Template design pattern,
11 referred to as *VNF Modularity.*
13 .. _heat_onap_vnf_modularity_overview:
15 ONAP VNF Modularity Overview
16 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
24 A VNF **MAY** be composed from one or more Heat Orchestration
25 Templates, each of which represents a subset of the overall VNF.
27 The Heat Orchestration Templates can be thought of a components or modules of
28 the VNF and are referred to as *VNF Modules*. During orchestration,
30 deployed incrementally to create the complete VNF.
39 A VNF's Heat Orchestration Template **MAY** be
40 1.) Base Module Heat Orchestration Template (also referred to as a
42 2.) Incremental Module Heat Orchestration Template (referred to as
43 an Incremental Module), or
44 3.) a Cinder Volume Module Heat Orchestration Template (referred to as
45 Cinder Volume Module).
53 A VNF **MUST** be composed of one Base Module
60 A VNF **MAY** be composed of zero to many Incremental Modules.
67 A VNF's incremental module **MAY** be used for initial VNF deployment only.
74 A VNF's incremental module **MAY** be used for scale out only.
76 A VNF's Incremental Module that is used for scale out is deployed sometime
77 after initial VNF deployment to add capacity.
85 A VNF's incremental module **MAY** be used for both deployment and
93 A VNF's incremental module **MAY** be deployed more than once,
94 either during initial VNF deployment and/or scale out.
101 A VNF's Heat Orchestration Template's Resource ``OS::Heat::CinderVolume``
102 **MAY** be defined in a Base Module.
109 A VNF's Heat Orchestration Template's Resource ``OS::Heat::CinderVolume``
110 **MAY** be defined in an Incremental Module.
117 A VNF's Heat Orchestration Template's Resource ``OS::Heat::CinderVolume``
118 **MAY** be defined in a Cinder Volume Module.
120 ONAP also supports the concept of an optional, independently deployed Cinder
121 volume via a separate Heat Orchestration Templates, referred to as a Cinder
122 Volume Module. This allows the volume to persist after a Virtual Machine
123 (VM) (i.e., OS::Nova::Server) is deleted, allowing the volume to be reused
124 on another instance (e.g., during a fail over activity).
130 :validation_mode: static
133 A VNF's Cinder Volume Module, when it exists, **MUST** be 1:1
134 with a Base module or Incremental module.
136 It is strongly recommended that Cinder Volumes be created in a Cinder Volume
143 :validation_mode: static
146 A VNF's Base Module **MUST** have a corresponding Environment File.
152 :validation_mode: static
155 A VNF's Incremental Module **MUST** have a corresponding Environment File
161 :validation_mode: static
164 A VNF's Cinder Volume Module **MUST** have a corresponding environment file
166 These concepts will be described in more detail throughout the document.
167 This overview is provided to set the stage and help clarify the concepts
168 that will be introduced.
170 Nested Heat Orchestration Templates Overview
171 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
173 ONAP supports nested Heat Orchestration Templates per OpenStack
182 A VNF's Base Module **MAY** utilize nested heat.
189 A VNF's Incremental Module **MAY** utilize nested heat.
196 A VNF's Cinder Volume Module **MAY** utilize nested heat.
198 Nested templates may be suitable for larger VNFs that contain many
199 repeated instances of the same VM type(s). A common usage pattern is to
200 create a nested template for each VM type along with its supporting
201 resources. The Heat Orchestration Template may then reference these
202 nested templates either statically (by repeated definition) or
203 dynamically (via OS::Heat::ResourceGroup).
205 See :ref:`Nested Heat Templates` for additional details.
207 ONAP Heat Orchestration Template Filenames
208 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
210 In order to enable ONAP to understand the relationship between Heat
211 files, the following Heat file naming convention must be utilized.
213 In the examples below, <text> represents any alphanumeric string that
214 must not contain any special characters and must not contain the word
222 :validation_mode: static
224 A VNF's Heat Orchestration Template's file extension **MUST**
225 be in the lower case format ``.yaml`` or ``.yml``.
231 :validation_mode: static
233 A VNF's Heat Orchestration Template's Nested YAML file extension **MUST**
234 be in the lower case format ``.yaml`` or ``.yml``.
240 :validation_mode: static
242 A VNF's Heat Orchestration Template's Environment file extension **MUST**
243 be in the lower case format ``.env``.
249 :validation_mode: static
251 A VNF's YAML files (i.e, Heat Orchestration Template files and
252 Nested files) **MUST** have a unique name in the scope of the VNF.
262 :validation_mode: static
265 A VNF Heat Orchestration Template's Base Module file name **MUST** include
266 case insensitive 'base' in the filename and
267 **MUST** match one of the following four
270 1.) ``base_<text>.y[a]ml``
272 2.) ``<text>_base.y[a]ml``
276 4.) ``<text>_base_<text>``.y[a]ml
278 where ``<text>`` **MUST** contain only alphanumeric characters and
279 underscores '_' and **MUST NOT** contain the case insensitive word ``base``.
285 :validation_mode: static
287 A VNF Heat Orchestration Template's Base Module's Environment File
288 **MUST** be named identical to the VNF Heat Orchestration Template's
289 Base Module with ``.y[a]ml`` replaced with ``.env``.
299 :validation_mode: static
302 VNF Heat Orchestration Template's Incremental Module file name
303 **MUST** contain only alphanumeric characters and underscores
304 '_' and **MUST NOT** contain the case insensitive word ``base``.
310 :validation_mode: static
312 A VNF Heat Orchestration Template's Incremental Module's Environment File
313 **MUST** be named identical to the VNF Heat Orchestration Template's
314 Incremental Module with ``.y[a]ml`` replaced with ``.env``.
316 To clearly identify the incremental module, it is recommended to use the
317 following naming options for modules:
319 - ``module_<text>.y[a]ml``
321 - ``<text>_module.y[a]ml``
325 - ``<text>_module_<text>.y[a]ml``
327 Cinder Volume Modules
328 ~~~~~~~~~~~~~~~~~~~~~
335 :validation_mode: static
338 A VNF Heat Orchestration Template's Cinder Volume Module **MUST**
339 be named identical to the base or incremental module it is supporting with
340 ``_volume`` appended.
346 :validation_mode: static
349 A VNF Heat Orchestration Template's Cinder Volume Module resources section
350 **MUST** only be defined using one of the following:
352 * one of more ``OS::Cinder::Volume`` resources
353 * one or more ``OS::Heat::ResourceGroup`` resources that call a nested YAML
354 file that contains only ``OS::Cinder::Volume`` resources
355 * a resource that calls a nested YAML file (static nesting) that contains
356 only ``OS::Cinder::Volume`` resources
362 :validation_mode: static
365 VNF Heat Orchestration Template's Cinder Volume Module's Environment File
366 **MUST** be named identical to the VNF Heat Orchestration Template's
367 Cinder Volume Module with ``.y[a]ml`` replaced with ``.env``.
377 :validation_mode: static
380 VNF Heat Orchestration Template's Nested YAML file name **MUST** contain
381 only alphanumeric characters and underscores '_' and
382 **MUST NOT** contain the case insensitive word ``base``.
388 :validation_mode: static
390 A VNF HEAT's Orchestration Nested Template's YAML file name **MUST NOT**
391 be in the format ``{vm-type}.y[a]ml`` where ``{vm-type}`` is defined
392 in the Heat Orchestration Template.
398 - ``nest_<text>.y[a]ml``
400 - ``<text>_nest.y[a]ml``
404 - ``<text>_nest_<text>.y[a]ml``
406 VNF Heat Orchestration Template's Nested YAML file does not have a
407 corresponding environment files, per OpenStack specifications.
409 .. _Output Parameters:
412 ^^^^^^^^^^^^^^^^^^^^^^
414 The output parameters are parameters defined in the output section of a
415 Heat Orchestration Template. The ONAP output parameters are subdivided
416 into three categories:
418 1. ONAP Base Module Output Parameters
420 2. ONAP Volume Module Output Parameters
422 3. ONAP Predefined Output Parameters.
424 ONAP Base Module Output Parameters
425 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
427 ONAP Base Module Output Parameters are declared in the ``outputs:`` section
428 of the VNF's Heat Orchestration Template's Base Module. A Base Module Output
429 Parameter is available as an input parameter (i.e., declared in
430 the ``parameters:`` section) to all Incremental Modules in the VNF.
432 A Base Module Output Parameter may be used as an input parameter in any
433 incremental module in the VNF. Note that the parameter is not available to
441 :validation_mode: static
443 VNF's Heat Orchestration Template's Base Module's output parameter's
444 name and type **MUST** match the VNF's Heat Orchestration Template's
445 incremental Module's name and type.
451 :validation_mode: static
453 When a VNF's Heat Orchestration Template's Base Module's output
454 parameter is declared as an input parameter in an Incremental Module,
455 the parameter attribute ``constraints:`` **MUST NOT** be declared.
457 Additional details on ONAP Base Module Output Parameters are provided in
458 :ref:`ONAP Output Parameter Names` and ONAP VNF Modularity.
460 ONAP Volume Module Output Parameters
461 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
468 :validation_mode: static
471 A VNF's Heat Orchestration Template's Cinder Volume Module Output
474 UUID(s) of the Cinder Volumes created in template.
476 A VNF's Heat Orchestration Template's Cinder Volume Module Output Parameter(s)
477 are only available for the module (base or incremental) that the volume
478 template is associated with.
485 :validation_mode: static
488 A VNF's Heat Orchestration Templates' Cinder Volume Module Output
489 Parameter's name and type **MUST** match the input parameter name and type
490 in the corresponding Base Module or Incremental Module.
496 :validation_mode: static
498 When an ONAP Volume Module Output Parameter is declared as an input
499 parameter in a base or an incremental module Heat Orchestration
500 Template, parameter constraints **MUST NOT** be declared.
502 Additional details on ONAP Base Module Output Parameters are provided in
503 :ref:`ONAP Output Parameter Names` and :ref:`ONAP Heat Cinder Volumes`.
505 ONAP Predefined Output Parameters
506 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
508 ONAP will look for a small set of pre-defined Heat output parameters to
509 capture resource attributes for inventory in ONAP. These output parameters
510 are optional and currently only two parameters are supported. These output
511 parameters are optional and are specified in
512 :ref:`OAM Management IP Addresses`.
514 Support of heat stack update
515 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
517 ONAP does not support the use of heat stack-update command for scaling
525 :validation_mode: static
527 A VNF Heat Orchestration Template **MUST NOT** be designed to utilize the
528 OpenStack ``heat stack-update`` command for scaling (growth/de-growth).
534 :validation_mode: static
536 A VNF **MUST** utilize a modular Heat Orchestration Template design to
537 support scaling (growth/de-growth).
539 It is important to note that ONAP only supports heat stack-update for
542 Scope of a Heat Orchestration Template
543 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
550 :validation_mode: static
552 A VNF's Heat Orchestration Template **MUST NOT** be VNF instance
553 specific or cloud site specific.
555 ONAP provides the instance specific parameter values to the Heat
556 Orchestration Template at orchestration time.
563 :validation_mode: static
565 A VNF's Heat Orchestration Template's parameter values that are constant
566 across all deployments **MUST** be declared in a Heat Orchestration
567 Template Environment File.
576 When a VNF's Heat Orchestration Template is ready
577 to be on-boarded to ONAP,
578 all files composing the VNF Heat Orchestration Template
579 **MUST** be placed in a flat (i.e., non-hierarchical) directory and
580 archived using ZIP. The resulting ZIP file is uploaded into ONAP.
582 The VNF's Heat Orchestration Template's ZIP file must include
583 the base module YAML file (R-37028) and corresponding environment file
586 The VNF's Heat Orchestration Template's ZIP file **MAY** include
588 * One or more incremental module YAML files (R-13196) and corresponding
589 environment files (R-81725).
590 * One or more volume module YAML files (R-03251) and corresponding
591 environment files (R-53433).
592 * One or more nested YAML files (R-36582, R-56721, R-30395).
593 * One or more files that are retrieved via the intrinsic function
594 ``get_file``. The ``get_file`` function returns the content of a file
595 into a Heat Orchestration Template. It is generally used as a file
596 inclusion mechanism for files containing scripts or configuration files.
603 The VNF's Heat Orchestration Template's ZIP file **MUST NOT** include