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 XOSThe 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>
.
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.
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