TOSCA Development
TOSCA is typically used to provision the services loaded into CORD as part of
some profile. This is a two-step process: (1) during the build stage, TOSCA
templates are rendered using variables set in the podconfig
, scenario
, and
default
roles into fully qualified TOSCA recipes, and (2) as the last step of
the deploy stage, these TOSCA recipes are onboarded into XOS (which provisions
the service profile accordingly). These two steps are implemented by a pair of
Ansible roles:
cord-profile
responsible for generating the TOSCA recipes from templatesxos-config
responsible for onboarding the TOSCA recipes into XOS
The following describes how to create a new TOSCA template and make it
available to provision CORD. This is done in the context of the profile you
want to provision, where profiles are defined in
orchestration/profiles/<profilename>
.
Create a New Template
You can create as many templates as needed for your profile in directory
orchestration/profiles/<profilename>/templates
. There are also some
platform-wide TOSCA templates defined in
/platform-install/roles/cord-profile/templates
but these are typically not
modified on a profile-by-profile basis.
These templates use the jinja2
syntax, so for example, a basic
template might be site.yml.j2
:
tosca_definitions_version: tosca_simple_yaml_1_0
description: created by platform-install, need to add M-CORD services later
imports:
- custom_types/xos.yaml
topology_template:
node_templates:
{{ site_name }}:
type: tosca.nodes.Site
Your templates can use all the variables defined in the build glossary.
Add the Template to your Profile Manifest
Locate and open the profile manifest you want to affect:
orchestration/profiles/<profilename>/<profilename>.yml
.
Locate a section called xos_tosca_config_templates
(if it's missing create
it), and add there the list of templates you want to be generated and
onboarded; for example:
xos_tosca_config_templates:
- site.yml
NOTE: the template name is whatever you specify in this list plus
.j2