Templates

Templates can be created directly in Morpheus and/or sourced from version control, depending on the type. They can be used to help users consume IaC technologies, generate configuration files, utilize scripts or store security scan packages. Once stored, they can be used with provisioned Instances, configured as part of Tasks or Workflows, or run regularly as part of security scan Jobs. Each section below discusses template types in greater detail.

Spec Templates

Spec Templates allow Morpheus users to leverage several major Infrastructure-as-Code solutions. These are typically JSON or YAML-based configuration files which make creating and managing multiple resource types easier. Morpheus allows users to create and/or manage a collection of these templates for different solutions and from different sources.

Morpheus currently supports Spec Templates of the following types:

  • Kubernetes Spec

  • Helm Chart

  • Terraform

  • ARM Template

  • CloudFormation Template

  • OneView Server Profile Template

  • UCS Service Profile Template

Morpheus also allows users to leverage templates pulled from URL sources, online repositories (such as GitHub), or you can write a template locally inside the “NEW SPEC TEMPLATE” modal.

Tip

To see Morpheus Spec Templates in action, take a look at our guide on creating custom Instance Types using Terraform or see our KnowledgeBase for another example where a CloudFormation Spec Template is used to create a provisionable custom Instance Type.

Creating a Spec Template

  1. Navigate to Library > Templates > Spec Templates

  2. Click + ADD

  3. Complete the following fields, then click SAVE CHANGES:

  • NAME

  • TYPE: See the previous section for a complete list of Spec Template types

  • SOURCE: Local, Repository, or URL

  • CONTENT: If this is a local Spec Template, supply the template in this field. If the template is supplied through a URL or online repository, the CONTENT field will change to allow the user to point Morpheus to that resource

  • VERSION: (Only displayed on Terraform Spec Templates) Enter a Terraform version number to force a specific version when provisioning your Terraform Instance Type or App, assuming your Terraform Runtime setting (Administration > Settings > Provisioning Tab) is “auto”. If Terraform Runtime is set to “manual”, Morpheus will use the version of Terraform installed on the appliance box

File Templates

File Templates are for generating config files, such as my.cnf, elasticsearch.yml, morpheus.rb, or any text file. With full config map variable support, Template Files are dynamically generated during a Workflow phase or ad hoc via Instance actions.

File Templates can also be exposed on Instances in the Settings Tab. Ensure the Instance Type supports settings, and Category is defined in Advance Options on the Library Template config.

Note

Morpheus variables are supported in Library Templates using <%= variable.var %> format

Examples:

HA Proxy Config (haproxy.cfg)

  • FILE NAME: haproxy.cfg

  • FILE PATH: /config/haproxy.cfg

  • PHASE: Pre Provision

  • TEMPLATE:

  • SETTING NAME: haproxyConfig

  • SETTING CATEGORY: haproxy

#!/bin/bash

global
 maxconn 256
 log /dev/log local0 warning
 log-tag <%=logTag%>

defaults
 mode http
 timeout connect 5000ms
 timeout client 50000ms
 timeout server 50000ms
 log global

frontend http-in
 bind *:<%=container.externalPort%>
 default_backend servers

backend servers
 # server server1 127.0.0.1:80 maxconn 32

mysql config (mysqld.cnf)

  • FILE NAME: mysqld.cnf

  • FILE PATH: /config/mysqld.cnf

  • PHASE: Pre Provision

#!/bin/bash

[mysqld]
pid-file= /var/run/mysqld/mysqld.pid
socket= /var/run/mysqld/mysqld.sock
datadir= /var/lib/mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
explicit_defaults_for_timestamp = 1

Script Templates

Scripts are bash and Powershell scripts that can be attached to Node Types to always execute at the selected phase when that Node Type is provisioned, added to Workflows as Library Script Tasks, and/or executed ad-hoc on Instances.

Creating Scripts

  1. Navigate to Library > Templates > Script Templates

  2. Select + ADD

  3. Enter the Following:

    NAME

    Name of the Script in Morpheus

    SCRIPT TYPE
    • Bash

    • Powershell

    PHASE

    Select which phase the Script will execute when attached to a Node Type. When a script is attached to a Node Type, it will execute according to the selcted phase:

    Start Service

    Any time the Instance action Start Service is executed

    Stop Service

    Any time the Instance action Stop Service is executed

    Pre-Provision
    • Containers: Script will execute against the container host before the container is provisioned

    • Virtual Machines: Script will execute before any provision phase Scripts or Tasks

    Provision

    Script will execute once per new Instance node during the provision Phase. Provisioning will not be considered complete until all scripts and tasks in the provisioning phase are completed

    Note

    Any Script or Task set to the provision phase will be included in the total provision time and impact success/warn/failure provisioning status messages. As an example, your VM could be up and running but if your Script is in the provision phase and fails, provisioning will be marked as a failure.

    Post-Provision

    Script will execute once per new Instance node after the provision phase is completed. Scripts and Tasks in the Post-Provision phase will show execution status and history, but are not considered part of the provision and do not impact provisioning status.

    Pre-Deploy

    Script will execute on target Instance any time a deployment is run against the Instance. The Script will run prior to the deployment file(s) being written

    Deploy

    Script will execute on target Instance any time a deployment is run against the Instance. The script will run after the deployment file(s) are written

    Reconfigure

    Script will execute on target Instance any time a reconfigure is executed against the Instance.

    Teardown

    Script will execute on target Instance upon Instance deletion. Script will execute against target Instance prior to the deletion/removal of resources.

    SCRIPT

    Enter Bash or Powershell script.

    Note

    Morpheus variables are supported in Library Scripts using <%= variable.var %> format

    RUN AS USER

    By default Scripts are execute as morpheus-node. To execute as another User, populate RUN AS USER and ensure proper user permissions & group access

    SUDO

    Flag SUDO if sudo is required to execute the Script

To attach Scripts and templates that have been added to the Library to a Node Type, start typing the name and then select the script(s) and/or template(s).

  • Multiple scripts and templates can be added to a Node Type

  • Scripts and Templates can be added/shared among multiple Node Types

  • The execution phase can be set for Scripts in the Scripts section

  • Search will populate Scripts or Templates containing the characters entered anywhere in their name, not just the first letter(s) of the name

Security Packages

The Security Packages Section is for uploading SCAP packages which can then be consumed in Security Scan Jobs (Provisioning > Jobs).

Add a new Security Package

  1. Navigate to Library > Templates > Security Packages

  2. Click +ADD > SCAP Package

  3. Provide a name in addition to a URL to source the package

  4. Click SAVE CHANGES

Note

Currently URL is the only source option for security packages

../../_images/1add_package.png

Cluster Packages

Cluster Packages are created and can then be associated with Cluster Layouts. Cluster Packages themselves are created from Spec Templates. The Spec Templates and Cluster Layouts sections of Morpheus docs include more information on creating those constucts and show the steps to deploy sample builds.

Creating a Cluster Package

Navigate to the Cluster Packages List page (Library > Templates > Cluster Packages). System Cluster Packages are listed here. These are included as part of Morpheus pre-built Cluster Layouts and cannot be edited or viewed. User-created Cluster Layouts are also listed here and these may be edited. To begin creating a new Cluster Package, click + ADD and configure the following:

  • NAME: A friendly name for the Cluster Package in Morpheus

  • CODE: An identifying code for the Cluster Package for use with Morpheus API and CLI

  • DESCRIPTION: An optional description for the Cluster Package

  • PACKAGE VERSION: A version designation for the Cluster Package

  • ICON: An identifying icon for the Cluster Package, this will appear in a list with other packages associated with a Cluster Layout

  • DARK MODE IMAGE: An alternate icon for the Cluster Package used when the dark theme is enabled on the Morpheus appliance

  • TYPE: A type selection for the package, see dropdown for options

  • PACKAGE TYPE: A one-word descriptor for the package such as “calico”, “prometheus”, etc.

  • ENABLED: When marked, this Cluster Package is available to be set on Cluster Layouts

  • REPEAT INSTALL: When marked, if the package install initially fails, the installation will be attempted again

  • SPEC TEMPLATES: Use the Typeahead field to select relevant Spec Templates to build the Cluster Package

../../_images/cluster-packages.png