Orchestration Templates are essentially infrastructure automation instructions written in “YAML” or “JSON” format. Templates can have multiple tasks within them each of them performing a specific action in a target cloud or a tool. You may also have a single template to orchestrate across multiple cloud(s) and/or tool(s).
CoreStack™ supports Templates of the formats: AWS CFN, Azure ARM, OpenStack HEAT, OpenStack MISTRAL
One of the key differentiators of CoreStack™ is its support for cloud-native DSL (Domain Specific Language) which ensures that there is no limitation in terms of the supported services within that platform, and also there is no vendor lock-in.
For example: You can execute
- CFN Templates against AWS,
- ARM Templates against Azure, and
- HEAT Templates against OpenStack Public/Private Cloud Accounts.
You can bring into CoreStack™ any of these templates with ease and also re-use them outside of CoreStack™ if required.
A sample screenshot is shown below:
The tabs at the top represent the scope of the templates. You can see 2 tabs: Marketplace and My Templates.
CoreStack™ provides a wide range of pre-defined templates which can help in realizing multiple use cases. The marketplace lists the templates available across multiple clouds and tools. These are pre-loaded for all subscriptions and are FREE to be executed on-demand or scheduled.
These templates are available across all tenants and are usually created by the Product Administrator. In our SaaS version, it is managed by CoreStack™. In on-premise installations, it will be managed by the on-site administrator.
These templates have the scope value set to Global.
These templates have been created by users within the tenant. These are available only for users within the tenant. You can add more templates or edit/delete existing templates in this tab based on your role and access policies.
These templates have the scope value set to Tenants.
CoreStack™ offers search and filter functions to help quickly look for the templates you need to execute. The Search bar is available just above the templates list and works based on the Template Name and the “tags” mapped to it. To Filter Templates, you can click on the “Funnel” icon placed to the right end above the templates list.
The Text Search helps you search using any string available in the following fields:
- Name of the Template
- Description of the Template
The text search is thus quite useful in refining your search results based on any little information you have on the preferred result set.
CoreStack™ also offers Filters to help you narrow down the list of templates by using one or a combination of filters. On clicking the Filter icon, you will see the list of Filter options available as shown below. Select the preferred options and click on “Show Result” button at the bottom of this box.
Use the Reset icon above the filters to quickly remove all selected filters and view all results.
Once you decide on a template that you would like to try out, you can execute it on-demand or schedule it for a one-time or recurring execution(s) in future.
To get more information about a specific template, click on the template name to open the ‘Template Detail’ page. You can view the attributes related to the template and update the values if required by clicking on Update.
The actual content of the template, which is in ‘YAML’ or ‘JSON’ format is also displayed. Click ‘Edit’ button and make changes to the content if required.
To view the actions that you can perform on a selected template, just move your cursor towards the right end of that template row.
The actions menu icon () reveals the list of actions that you can perform on the template. The list of actions depends on the scope of the template (Marketplace, My Templates) and the access policies that your account has.
Given below are the actions that can be performed on a template:
- Execute – Lets you execute the template immediately (On-demand)
- Update – Modifies the attribute values or template content
- Schedule – Similar to Execute, but schedules it to be run later once/multiple times.
- Delete – Deletes the template
- Reload – Reloads this Template into Template Builder (Supported only for Templates built using the Builder. This is an Enterprise Feature)
This option is for on-demand execution of the template. Click execute and select/provide the following inputs:
|Service Account||Account against which this template is to be executed. This is the Cloud Account or the Integrated Tool’s account. There can also be multiple Clouds / Tools mapped to a single template|
|Region||If the Cloud Account has multiple regions, you will have to select the region to execute|
|Tenant||If the Cloud Account has multiple tenants, you will have to select the tenant to execute|
|Input Parameters||This will vary based on the template. The input parameters required for the template will be defined while creating the template. The appropriate values have to be provided before you can execute the template.|
A sample Template execute window, for a simple example of taking an ‘AWS Instance Snapshot’ is shown below:
- The Service Account lists the available list of AWS cloud accounts in this Tenant
- The list of available regions in that account are loaded in the dropdown for selection
- Once the region is selected, you can see that the list of instances available in that region are loaded in the Instance ID field
- You can enter any name for the snapshot and hit “Run Now” to execute the template.
- Once a template is executed, it is run as a “Job” within CoreStack™. You can check the execution logs and job status from the “Job” menu in the side menu.
- Most of the input parameter values are fetched automatically from the respective cloud account. This is very useful in choosing real-time values from the cloud. There is no need to login to the AWS Console to refer these details.
- You can use the “?” on the right side of each input parameter to understand more about the parameter.
Scheduling a template enables its execution at a specific point of time. You can also schedule it to be a recurring event, to be repeated hourly / Daily / Weekly / Monthly / Yearly.
To create a schedule, use the Schedule () action for that particular template from the Template page. Notification emails will be sent to the user each time the scheduled job starts and also when it completes (success/failure).
Screenshot to schedule a Volume snapshot template is shown below:
The list of schedules created for that specific tenant can be viewed from the schedule menu. There is also a calendar view that will display the schedules in day / week / month views.
Reloading a Template is useful to pick-up an existing template and make changes to it using the Template Builder interface. This is currently available only for Templates which are originally built using the builder. Custom Templates uploaded into the system cannot be reloaded.
To reload a built template, use the reload icon in the Template Listing page.
Or you can choose from the drop-down in the pop-up that shows up when you select Template Builder from the menu. You can also reload draft templates that were previously “saved” from the Template Builder, but have NOT been “Built” yet.
- Use the ‘+’ button next to the ‘Search’ bar at top right.
- Enter the metadata for the template and upload the template file.
- Formats supported for the template file upload include ‘YAML’ and ‘json’.
Meta data values to be selected:
|Field Name||Brief Description|
|Template Name||Preferred name for the template. If named based on the purpose, it will help easily identification and search.|
|Template Description||Detailed description of the purpose and use case of the template. Can also include details about the version of the OS, Platform supported etc.,|
|Type||There are four types – Cloud, Monitoring, Continuous Integration and Log Management|
|Classifications||There are eight categories – Provisioning, Configure, Backup, Account Management, Catalog Builder, Deployment, Autoscaling and Migrate|
|Scope||Global: The template can be accessed by all users across all tenants. This value is available only for Product Admins. Will NOT be available in SaaS version.
Tenant: The template can be accessed by all users within the Tenant
|Tags||Custom Key – value tags that can help in grouping or searching of templates
Multiple Tags can be added
|File Upload||Click Browse button and select a valid YAML or JSON file that has the Template Content|
Template Builder is a very simple easy-to-use drag-drop user interface that can build cloud orchestration templates. It makes it very easy to build a complex YAML file by just specifying the requirements using the drag-drop interface. Creation of such YAML files from scratch could take a few hours, but using this function it can be built within few minutes. This is an Enterprise Feature.
Before going through the list of components, it would help to understand the terminologies and approach used in this function.
Workspace: This indicates the white space or the drawing board where the components will be dragged into. This is blank to start with, and the user can add any number of components to this workspace as per the requirement.
Tier: The tier represents a group of related resources that have inter-relationships. The components dragged into a specific tier are all assumed to be linked together. The builder automatically related the components. E.g. If a tier contains a Network, VM, Key pair, Security Group – the VM is automatically linked to the other 3 components in that tier.
A good example would be that all components related to a webserver instance can be grouped under Tier-1 and all components related to the DBserver can be grouped into Tier-2.
Component Properties: Each component will have a set of Mandatory and Optional properties. The property window will show up when a specific component is clicked (after it is dropped into the workspace). The values for the properties are provided in 3 different options:
- When a related component is available in the same Tier, the value for the property is automatically mapped. No action required from the user. (E.g Subnet Id, Security Group Id for a VM, is automatically linked to the Subnet, Security Group in that Tier)
- User can choose to specify a value for the properties in the builder page itself. In such case, this value is set as default for that property and it will NOT be required as an input parameter while executing the template. (e.g. Flavor having the value ‘t1.micro’)
- User can decide to leave it blank. In such case, the property will be listed as an input parameter while executing the template. (e.g. Instance Name)
Optional properties are grouped under ‘Advanced’. These are available for the user to provide a value if required. Otherwise these will be left blank and will not be prompted for input while execution as well.
Dependent Components: There are list of dependent components which are always associated to a parent component and never used directly. (E.g. Security Group Rules, ACL Rules, Floating IP, Applications). Such components will be dropped into the related parent components. To view the dependent components associated to a parent component, click on the “i” symbol on the left top corner of the component.
The various components supported by Template Builder are listed below for easy reference.
When Template Builder is selected from the Menu, the Builder is opened in a new tab. There are 2 options provided –
- build a new template afresh (or)
- to reload an existing template and make changes.
- Provide a “Template Name”
- Select the “Service” (AWS, HP Cloud and OpenStack are currently supported) in which the template is to be created.
Once this is specified, the Builder opens up, with the components listed on the left side, the workspace in the middle and Template properties at the right side.
Create 1st Tier: You can start building the template by dragging and dropping required components into the workspace. A new Tier gets created when the first component is dragged into the workspace.
Creating 2nd Tier (Optional): There are certain components which are allowed only once per Tier. When you drag in a 2nd component of such type, the system will prompt to create a new Tier. (e.g. Security Group, Subnet). To explicitly create a new Tier, you must drag in one of such components into the workspace.
Moving components between Tiers: If there is a need, you can just drag a component from one Tier to another. In such case, once the component is moved to the target tier – 2 options are displayed above the component – Move and Re-Use.
- To move the component (remove from source tier and have it only in target tier) click on Move.
- To re-use the same component as input parameters for resources in that Tier as well, use “Re-Use”. In case of Re-use, the component will be created only as part of Tier-1, but will be available for mapping in Tier-2.
Dropping dependent components: Read more about dependent components in the introduction of Template Builder above. When you drag in a dependent component, the related parent components blink. If there are multiple parent components, all of them blink. You can decide on which one to drop this into and when you drag it closer, the component enlarges to receive the incoming component. Once added, you can view the list by clicking on the “i” to the left of the parent component.
Removing Components: To remove a specific component, you can just use the delete (x) icon at the top right of each component. Note that when a parent component is removed, all its dependent components are also removed. If you need to remove all components from the workspace, you can use the Clear button in the right panel.
Saving your Template: Use the Save button in the right panel to save a draft version of the template. At this point, it will NOT be available in the Template Listing – it will only be a draft that can be reloaded into the builder for further editing.
Build your Template: When you are done with creating the template, you can use the Build button in the right panel to create the template. The same set of fields required to create a template (Refer Create Template section under Templates for more information) are to be entered here. Only difference is that you need NOT upload a YAML file – it is now created for you by the builder.
A short video of a sample AWS use case is available in the below you tube link.