Library

Overview

The Library section is used to add Virtual Images as custom Instance Types to the provisioning catalog. The Library section is composed of:

  • Instance Types

  • Layouts

  • Node Types

  • Option Types

  • Option Lists

  • File Templates

  • Scripts

  • Spec Templates

  • Cluster Layouts

When provisioning, the User selects an INSTANCE TYPE from the provisioning wizard. At this stage, we can present custom OPTION TYPES to the User which alter deployment in ways the administrator predetermines. Based on the selected Cloud technology and Version, the User is presented with applicable LAYOUTS selections. LAYOUTS can take advantage of Workflows which automate Tasks and can utilize a wide range of DevOps automation technologies. One or more NODE TYPES is associated with the LAYOUT. NODE TYPES are the bridge between LAYOUTS and Images. NODE TYPES can also take advantage of File Templates for custom configuration and Scripts which can be queued to run at any stage of the Instance lifecycle.

../../_images/library_item_transparent.png

Instance Types

Adding an Instance Type creates a new Library item category. Multiple Layouts can be added to an Instance Type and these Layouts can have different Nodes attached. The Instance provisioning wizard will present the Layout options compatible with the selected Cloud. If Cloud selection is turned off, all Layouts will be presented for all Cloud types accessible by the User.

../../_images/Types_Library_Morpheus_salt_library_item.png
Name

Name of the Instance Type in the provisioning Library

Code

A useful shortcode for provisioning naming schemes and export reference

Description

The description of the Instance Type shown in the Provisioning Library. (255 characters max)

Category

For filtering in Instance sections and provisioning wizard

  • Web

  • SQL

  • NoSQL

  • Apps

  • Network

  • Messaging

  • Cache

  • OS

  • Cloud

  • Utility

Icon

An identifiable icon to display in-line with your Instance Type in the provisioning wizard (Suggested dimensions: 150 x 51)

Visibility
  • Private: Only accessible by assigned Accounts/Tenants

  • Public: Accessible by all Accounts/Tenants

Option Types

Custom options presented to the user at provision time, Option Types are also created and stored in Morpheus Library

Environment Prefix

Used for exportable environment variables when tying Instance Types together in App contexts. If not specified, a name will be generated

Environment Variables

Name and value pairs for environment variables to be loaded on initialization

Enable Settings

Allows for attachment of modifiable file templates to Node Types in a settings tab of the Instance after deployment

Enable Scaling (Horizontal)

Enables load balancer assignment and auto-scaling features

Support Deployments

Enables deployment features (Requires a data volume be configured on each version. Files will be copied into this location)

Upon saving, this Instance Type will be available in the provisioning catalog, per User Role access. However, we still need to add Layouts to the Instance Type, and prior to creating a Layout, we will add a Node Type.

Layouts

Layouts are attached to Instance Types. A Layout can only be attached to a single Instance Type and a single Technology. An Instance Type can have one or many Layouts attached to it, allowing for a single Instance Type to work with any Technology type. Node Types are added to Layouts. A Layout can have one or many node types attached to it. Node types can be shared across Layouts of matching Technology types.

Important

Once an Instance Type is defined on a Layout and saved, the Instance Type setting and Technology selections on the Layout cannot be changed.

Layout List View

The default page for Layouts is the Layout list view. Select + ADD to create a new Layout. Layouts can also be created from an Instance Type detail page.

The following fields are displayed for each Layout:

  • NAME: Links to the Layout detail page

  • VERSION

  • INSTANCE TYPE: Links to the associated Instance Type

  • DESCRIPTION

The Actions menu in each row reveals the following options:

  • Permissions: Scope the Layout to Group(s) to narrow the list of available groups for a chosen Instance Type at provision time

  • Edit: Edit the Layout

  • Delete: Delete the Layout

Note

A Layout that is in use cannot be deleted.

Available Filters:

  • Technology: Display Layouts by selected Cloud technology

  • Instance Type: Display Layouts by the associated Instance Type

Layout Detail View

The Layout Detail view shows details on the Layout including Name, Short Name, Version, and Category. It also lists all associated Node Types.

  • Select a Layout Name from the list page or Instance Type detail page to get to a Layout detail page.

Layout Configuration Options

Instance Type

Select the Instance Type to add to the new Layout. Custom Instance Types must already be created and one Layout cannot be added to multiple instance types. The Instance Type also cannot be changed after creation.

Note

Layouts cannot be added to Morpheus pre-defined Instance Types

Name

The name the Layout presents as in the Configuration Options dropdown of the provisioning wizard

Version

The version number or name for the Layout. Layouts in an Instance Type with the same version will all show under the Configuration Options dropdown when that version is selected while provisioning

Description

Description of the Layout, viewable on the Layout list view

Creatable

When checked, this Layout will be selectable at provision time for the associated Instance Type (assuming the Layout is otherwise compatible with provisioning conditions). Instance Types with no Creatable Layouts will not be selectable from the provisioning wizard

Technology

Technology determines which Cloud this layout will be available for and which Node Types can be added to it

Minimum Memory

Defines the minimum amount of memory required for this Layout. Only Service Plans that meet the defined memory minimum will be available during provisioning when this Layout is selected. Custom memory values must also meet this minimum. Entering a minimum memory value of zero (the default value) indicates no minimum. This minimum memory value will override any Virtual Image minimum memory requirements

Workflow

Select a Workflow to automatically run and be attached to associated Instances using this Layout. If a Workflow is defined, it is not presented in the provisioning wizard and is not user configurable

Supports Convert to Managed

Enabled to allow users to select this layout when converting a Discovered workload to Managed

Enable Scaling (Horizontal)

Enables Instances with this layout to use scaling features

Environment Variables

Custom environment variables to be added to the Instance when provisioned

Option Types

Search for and select one or multiple Option Types to add to the Layout. Option Type input fields (except for Hidden Option Types) will appear in Provisioning, App, Blueprint, and Cloning wizards when this layout is selected

Nodes

Single or multiple nodes can be added to a Layout by searching for and selecting the Node(s)

Node Types

Node Types are the link between Images and Layouts.

Node Type Configuration Options

The following fields are for all Technology types:

Name

Name of the Node Type in Morpheus

Short Name

The short name is a lowercase name with no spaces used for display in your container list

Version

Version for the Node Type. Examples: 7.5, 2012 R2, latest

Technology

Select associated Technology. This will filter the available configuration options, images and which Layouts the Node Type can be added to

Environment Variables

Add pre-set environment variables to the Node Type

Category

Node Types of differing categories within the same Layout can have differing sizing

Technology-Specific Options

The Options fields will change depending on the Technology option selected. For VM provisioning technology options, select an image from the VM Image dropdown. This list is populated from the Morpheus Virtual Images section and will include images uploaded into Morpheus as well as synced images from added clouds.

Note

Amazon and Azure Marketplace Images can be added in the Virtual Images section for use as Node Types in custom library items.

Docker Options

For Docker, type in the name and version of the Docker Image, then select the integrated registry.

Service Ports

To open ports on the node, enter the name and port to expose. The Load Balancer HTTP, HTTPS, or TCP setting is required when attaching to Load Balancers.

Defining an Exposed port will also create a hyperlink(s) on the container location (IP) in the VM or Container section of the associated Instance detail page.

Scripts

Search for and select one or multiple scripts to be executed when the Node Type is provisioned

File Templates

Search for and select one or multiple File Templates to be written when the Node Type is provisioned

Example port configuration:

../../_images/node_ports.png

VMware Options

When VMware Technology Type is selected, EXTRA OPTIONS will be available in the VMware VM Options section. These allow defining Advance vmx-file parameters during provisioning.

Some Example include:

tools.setinfo.sizeLimit : 1048576
vmci0.unrestricted : FALSE
isolation.tools.diskWiper.disable : TRUE

Note

Not all parameters can be set using extra config parameters. A sample reference list can be found at http://www.sanbarrow.com/vmx/vmx-advanced.html#vmx

Important

Use caution when setting Extra Options. Malformed config files can break provisioning. Troubleshooting issues related to Extra Options defined are beyond the scope of Morpheus product support.

Option Types

Option Types are custom input fields that can be added to Instance Types and Layouts, then presented in Instance, App, and Cloning wizards. The resulting value is available in the Instance config map as <%=customOptions.fieldName%>. The fieldName and value can also be exported as Tags.

../../_images/new_option_type.png

Create Option Type

Note

All possible fields listed. Displayed fields depend on TYPE selection

NAME

Name of the Option Type

DESCRIPTION

Description for reference in Option Type list view

FIELD NAME

This is the input fieldName property that the value gets assigned to

Note

Field names should only contain letters, numbers, and hyphen (-), underscore (_), or dot’.’ for separation.

EXPORT AS TAG

Creates Tags for fieldName/value (key/value) on Instances

DEPENDENT FIELD

The Field Name value for a field that will reload this Option List to present a different set of selections. Take a look at the section below on Cascading Option Types as well as the associated article in our KnowledgeBase for documented examples of this feature

VISIBILITY FIELD

A Field Name and selection value that will trigger this field to become visible. Currently, this only works when the Option Type is associated with a Service Catalog Item and viewed from the Service Catalog Persona perspective. See the section below on the Visibility Field for instructions on configuring this value

DISPLAY VALUE ON DETAILS

When selected, the Option Type label and value (label: value) will be visible in a list of custom options on the Instance detail page

TYPE
  • Text: Text Input Field

  • Select List: Populated by Option Lists, presents a manual or REST-populated dropdown list

  • Checkbox: Checkbox for on or off values

  • Number: Input field allowing only numbers

  • Typeahead: Populated by Option Lists: Rather than presenting a potentially-large dropdown menu, the user can begin typing a selection into a text field and choose the desired option. Multiple selections can be allowed with this type by marking the ‘ALLOW MULTIPLE SELECTIONS’ box

  • Hidden: No field will be displayed, but the field name and default value will be added to the Instance config map for reference

  • Password: An input field with suitable encryption for accepting passwords

  • Radio List: Populated by Option Lists, presents a selection of radio buttons for the provisioning user

LABEL

This is the input label that typically shows to the left of a custom option

PLACEHOLDER

Background text that populates inside a field for adding example values, does not set a value

DEFAULT VALUE

Pre-populates field with a default value

HELP BLOCK

Helpful text that will appear under your Option Type field to inform users about their selection

REQUIRED

Prevents User from proceeding without setting value

DEFAULT CHECKED

For Checkbox types, when marked the Checkbox will be checked by default

OPTION LIST

For Select List types, select a pre-existing Option List to set dropdown values

Note

Select List and Typeahead Option Types require creation and association of an Option List

Cascading Option Types

One powerful facet of Morpheus Option Types is the ability to present users with different lists of input options based on their selections in other Option Types within the same wizard or modal. One common example, which is fully illustrated in this section, is to have a user select:

  • The Group they wish to provision into…

  • Then select the target Cloud from a list limited to Clouds which are in the selected Group…

  • Then select the target network from a list limited to networks which are available to the selected Cloud and Group

To set this up, we’ll first configure our Option Types (custom option fields that can be applied to Instance Types and other Morpheus constructs) and Option Lists (dynamic lists of possible choices which can be associated with Option Types and presented in a dropdown or typeahead format). Once the custom options are configured, we’ll associate them with a new service catalog item and take a look at how the user would interact with them.

Group Custom Option

To begin, we’ll create a new Option List. In this case, we’ll select type of “Morpheus Api” which will populate the list based on a call to the internal Morpheus API. Option Lists can also be populated by calls to external REST APIs or even from static lists that you enter manually. When dynamically populating Option Lists, whether via Morpheus API or an external API, translation and/or request scripts may be needed to prepare the request or translate the results. More on that as we build out the example.

I’ve called my Option List “Groups” and selected “Groups” from the OPTION LIST menu. This simply indicates that Groups are the construct we want to call into our list from Morpheus API. In this case, we want to present a list of all Groups to the user by their name and pass the Group database ID in the background. Since it’s common to create Option Lists from Morpheus API where the construct name is displayed to the user and the ID is passed, we actually don’t need to input any translation scripts in this case. However, I’ll include a translation script here which does the same thing simply to provide more clarity to the example. Morpheus Option List documentation includes additional details on available translation script inputs and which are available without translation as a convenience feature.

for (var x = 0; x < data.length; x++) {
  results.push({name: data[x].name, value:data[x].id});
}

After saving the Option List, create the Option Type that presents the list we just created. I gave my Option Type the name of “Selected Group”, field name of “selectedGroup”, and label of “Group”. For type, choose “Select List” and a new field will appear at the bottom of the modal where we can select the Option List we just created. With this configuration, the Option Type will present as a dropdown list containing the options called from our Option List.

Cloud Custom Option

Adding the Option List and Option Type for Clouds will be similar to the prior step with the exception that we will be including a request script which effectively filters the list of available Clouds to only those associated with the selected group. Follow the same process to start a new Option List, I’ve configured mine as follows:

  • NAME: Parsed Clouds

  • TYPE: Morpheus Api

  • OPTION LIST: Clouds

We also need a request script that loads the siteId attribute of the results variable with the Group ID if the user has made a group selection. Essentially it appends this input as a query parameter to the API call, calling (for example) .../api/clouds?siteId=1 rather than .../api/clouds. It should be similar to the script below. Note that we are referencing the selectedGroup field name we created previously and that a “site” is the term for Groups in the Morpheus database.

if (input.selectedGroup) {
  results.siteId = input.selectedGroup
}

We also need a translation script which will be identical to the one used previously with the exception that if there is no input on the selectedGroups field, nothing will be displayed for the Clouds option.

if (input.selectedGroup) {
for (var x = 0; x < data.length; x++) {
    results.push({name:data[x].name, value:data[x].id});
  }
}

We also need to create an Option Type to house this Option List. This process will be very similar to creating the previous Option Type except that we need to set selectedGroup as the Dependent Field. Setting a dependent field on an Option Type will trigger it to reload each time a selection is made in the indicated option. My configuration is as follows:

  • NAME: Parsed Cloud

  • FIELD NAME: parsedCloud

  • DEPENDENT FIELD: selectedGroup

  • TYPE: Select List

  • LABEL: Cloud

  • OPTION LIST: Parsed Clouds

Save your changes once done.

Network Custom Option

Finally, we’ll create and Option List/Option Type pair for network selection. In this case, it will be dependent on both the Group and Cloud selection. My Option List configuration is below:

  • NAME: Parsed Networks

  • TYPE: Morpheus Api

  • OPTION LIST: Networks

Request Script:

if (input.parsedCloud && input.selectedGroup) {
  results.cloudId = input.parsedCloud
  results.groupId = input.selectedGroup
}

Translation Script:

if (input.parsedCloud && input.selectedGroup) {
for (var x = 0; x < data.length; x++) {
    results.push({name:data[x].name, value:data[x].id});
  }
}

The Option Type is configured as follows:

  • NAME: Parsed Networks

  • FIELD NAME: parsedNetwork

  • DEPENDENT FIELD: parsedCloud

  • TYPE: Select List

  • LABEL: Network

  • OPTION LIST: Parsed Networks

Setting Custom Options at Provision Time

At this point, our dependent options are ready to be applied to custom Instance Types, Workflows or Service Catalog items as needed. When creating them, we can select an unlimited number of Option Types from a typeahead field on the create modal and they will be presented when a user goes to provision that element or run that Workflow. As an example, I’ve created a Service Catalog item that incorporates the three Option Types we’ve created. You can see how the dependent fields reload and present different options based on my selections.

../../_images/cascadingOptionList.gif

Visibility Field

The Visibility field for Option Types allows users to set conditions under which the Option Type being created or edited is displayed. A very simple visibility configuration would look like the following: config.customOptions.color:(red) where “color” represents the fieldName for any other Option Type which will determine the visibility of the current one and “red” represents any JavaScript regular expression that matches to the values that meet your desired conditions.

Expanding on the simplified example above, we could trigger visibility based on any one of multiple selections from the same Option Type by using a different regular expression, such as config.customOptions.color:(red|blue|yellow). Additionally, we aren’t restricted to the conditions of just one Option Type to determine visibility as the following would also be valid: config.customOptions.color:(red|blue|yellow),config.customOptions.shape:(square). In the previous example, the Option Type “Color” would have to be set to red, blue, or yellow OR the Option Type “Shape” would have to be set to square in order to trigger visibility of the Option Type currently being configured. Prepend the previous example with matchAll:: in order to require both conditions to be met rather than one or the other (ex. matchAll::config.customOptions.color:(red|blue|yellow),config.customOptions.shape:(square)).

Putting it all together, you’ll first configure visibility for your selected Option Types as described above. You can see in the screenshot below I’ve set the Option Type being edited to have a visibility dependent on another Option Type which you can see in the background.

../../_images/1optionType.png

Next, ensure the relevant Option Types are associated with the Service Catalog Item (Tools > Self Service).

../../_images/2configCatalogItem.png

Finally, when Service Catalog Persona users interact with my Catalog Item, they will be able to toggle additional Option Types to be visible based on their selections.

../../_images/3toggleOption.gif

Option Lists

Option Lists allow you to give the user more choices during provisioning to then be passed to scripts and/or automation. Option Lists, however, are pre-defined insofar as they are not free-form. They can be manually entered CSV or JSON, they can be dynamically compiled from REST calls via GET or POST requests, or populated by LDAP queries.

../../_images/newOptionList.png

Generic Option List Fields

The displayed fields in the create/edit Option List modal depend on the TYPE value selected.

NAME

Name of the Option List

DESCRIPTION

Description of the Option List for reference in Option List list view

TYPE
  • REST: REST API call to populate Option List

  • Manual: Manually entered dataset, CSV or JSON

  • Morpheus API: Call to internal Morpheus API to populate the Option List

  • LDAP: Searches and returns a list of Active Directory objects

VISIBILITY

If the account currently signed in is not in the master tenant, visibility will automatically change to private

Manual Option List Fields

DATASET

Appears only for manual Option Lists. Add your CSV or JSON list to this field

Note

JSON entries must be formatted like the following example: [{"name":"Test","value":1},{"name":"Testing","value":2}]

REST Option List Fields

SOURCE URL

A REST URL used to fetch list data which is cached in the appliance database

REAL TIME

When checked, a REST call will be made to update the Option List at the time its presented to the User

IGNORE SSL ERRORS

Do not fail API query for self-signed or invalid certs on REST call target

SOURCE METHOD

GET or POST

SOURCE HEADERS

Custom HTTP Headers to include in the source request

INITIAL DATASET

Create an initial JSON or CSV dataset to be used as the collection for this option list. It should be a list containing objects with properties ‘name’ and ‘value’

TRANSLATION SCRIPT

Create a JS script to translate the result data object into an array containing objects with properties ‘name’ and ‘value’. The input data is provided as ‘data’ and the result should be put on the global variable ‘results’.

Example:

for(var x=0;x < data.length; x++) {
  results.push({name: data[x].name,value:data[x].id});
}
REQUEST SCRIPT

Create a JS script to prepare the request. Return a data object as the body for a POST request, and return an array containing properties ‘name’ and ‘value’ for a GET request. The input data is provided as ‘data’ and the result should be put on the global variable ‘results’

Example:

results.push({name: 'userId', value : data.users})

Morpheus API Option List Fields

OPTION LIST

A list of available object types to return

TRANSLATION SCRIPT

Create a JS script to translate the result data object into an array containing objects with properties ‘name’ and ‘value’. The input data is provided as ‘data’ and the result should be put on the global variable ‘results’.

Example:

var i=0;
results = [];
for(i; i<data.length; i++) {
  results.push({name: data[i].name, value: data[i].value});
}

Translation script inputs:

Clouds

  • id: <Number>

  • value: <Number> // id, convenience

  • name: <String>

  • displayName: <String>

  • category: <String>

  • description: <String>

  • apiKey: <String>

  • status: <String>

  • hourlyPrice: <Number>

  • hourlyCost: <Number>

  • instanceType: <Object>

    • id: <Number>

    • name: <String>

  • plan:<Object>

    • id: <Number>

    • name: <String>

  • site:<Object>

    • id: <Number>

    • name: <String>

Environments

  • id: <Number>

  • value: <Number> // id, convenience attribute to avoid requiring translation

  • code: <String>

  • name: <String>

Groups

  • id: <Number>

  • value: <Number> // id, convenience attribute to avoid requiring translation

  • name: <String>

  • code: <String>

  • uuid: <String>

  • location: <String>

  • datacenterId: <Number>

Instances

  • id: <Number>

  • value: <Number> // id, convenience

  • name: <String>

  • displayName: <String>

  • category: <String>

  • description: <String>

  • apiKey: <String>

  • status: <String>

  • hourlyPrice: <Number>

  • hourlyCost: <Number>

  • instanceType: <Object>

    • id: <Number>

    • name: <String>

  • plan: <Object>

    • id: <Number>

    • name: <String>

  • site: <Object>

    • id: <Number>

    • name: <String>

Instances Wiki

  • id: <Number>

  • value: <Number> // id, convenience

  • name: <String>

  • urlName: <String>

  • category: <String>

  • instanceId: <String>

  • content: <String>

  • contentFormatted: <String>

  • format: <String>

  • createdByUsername: <String>

  • updatedByUsername: <String>

Networks

  • id: <Number>

  • value: <Number> // id, convenience

  • code: <String>

  • category: <String>

  • name: <String>

  • status: <String>

  • cloudId: <Number>

  • groupId: <Number>

  • networkType:<Object>

    • id: <Number>

    • code: <String>

    • name: <String>

  • externalId: <String>

  • externalNetworkType: <String>

  • networkDomain: <Object>

    • id: <Number>

    • name: <String>

  • networkPool: <Object>

    • id: <Number>

    • name: <String>

  • createdBy: <String>

Plans

  • id: <Number>

  • value: <Number> // id, convenience

  • code: <String>

  • name: <String>

  • storage: <Integer, bytes>

  • memory: <Integer, bytes>

  • cores: <Number>

Resource Pools

  • id: <Number>

  • value: <Number> // id, convenience

  • code: <String>

  • externalId: <String>

  • name: <String>

  • serverGroupId: <Number>

  • status: <String>

  • regionCode: <String>

  • parentPoolId: <Number>

  • type: <String>

Security Groups

  • id: <Number>

  • value: <Number> // id, convenience

  • code: <String>

  • name: <String>

  • externalType: <String>

  • externalId: <String>

  • cloudId: <Number>

  • scopeMode: <String>

  • scopeId: <Number>

Servers

  • id: <Number>

  • value: <Number> // id, convenience

  • name: <String>

  • displayName: <String>

  • description: <String>

  • category: <String>

  • osType: <String>

  • powerState: <String>

  • lastStats: <String>

  • zone: <Object>

    • id: <Number>

    • name: <String>

  • capacityInfo: <Object>

    • maxStorage: <Integer, bytes>

    • maxMemory: <Integer, bytes>

    • maxCores: <Number>

    • usedMemory: <Integer, bytes>

    • usedStorage: <Integer, bytes>

  • computeServerType: <Object>

    • id: <Number>

    • name: <String>

    • nodeType: <String>

    • vmHypervisor: <String>

    • containerHypervisor: <String>

Servers Wiki

  • id: <Number>

  • value: <Number> // id, convenience

  • name: <String>

  • urlName: <String>

  • category: <String>

  • serverId: <String>

  • content: <String>

  • contentFormatted: <String>

  • format: <String>

  • createdByUsername: <String>

  • updatedByUsername: <String>

REQUEST SCRIPT

The request script is used differently for Morpheus API Option List types. A Morpheus API option list type will use an internal API to return a list of objects instead of performing HTTP(S) requests to the Morpheus API. Due to this approach, the results object will not be used to generate query parameters or a JSON body. The results object will instead be used to contain a map of accepted key:value pairs that can be used to filter, sort and order the list of objects that get returned.

Below is a list of accepted key:value pairs for each object type:

Generic options available for all object types

  • max: <integer> // Maximum number of results to return. Default: 25

  • offset: <integer> // Offset for returned results. Default: 0

  • sort: <string> // Field to sort on. Default: ‘name’

  • order: <string> // Order of returned values. Accepted values: ‘asc’, ‘desc’. Default: ‘asc’

Example: results = {max: 5, order : 'desc'}

Networks

  • zoneId

  • siteId

  • planId

  • provisionTypeId: <Number> // Id of the provision type (technology), filters to only networks associated with this provision type

  • layoutId: <Number> // Id of an Instance Layout, ignored if provisionTypeId is supplied, otherwise used to look up the provision type

  • poolId: <Number> // Id of a network pool, filters to only networks within the specified network pool

Plans

  • zoneId

  • siteId

  • layoutId

  • provisionTypeId: <Number> // Id of the provision type (technology), filters to only plans associated with this provision type

Resource Pools

  • zoneId

  • siteId

  • planId

  • layoutId: <Number> // Id of an Instance Layout, used to get the associated provision type and filter to that provision type

Security Groups

  • zoneId // required

  • poolId

Clouds

  • zoneId : <integer>  // Database ID of cloud to return

  • tenantId : <integer> // Database ID of tenant where clouds are added. Filters to only clouds added within the specified tenant. Only available in Master Tenant

  • zoneTypeId : <integer> // Database ID of cloud type. Filters to only clouds with the specified cloud type

  • siteId : <integer> // Database ID of group. Filters to only clouds within the specified group

  • tagName : <string> // Filters to clouds with servers with tags containing the tagName

  • tagValue : <mixed> // Requires tagName. Filters to clouds with servers that have tags containing the tagName and specified tagValue

  • phrase : <string> // Fuzzy matches phrase on cloud name and description

Example: results = {tenantId: 1, siteId: 1, tagName: "morpheus"}

Instances

  • appsId : <integer> // Database ID of app to filter by. Returns instances linked to the app

  • tenantId : <integer> // Database ID of tenant where instances are located. Filters to only instances within the specified tenant. Only available in Master Tenant

  • serverId : <integer> // Database ID of server. Filters to the instance that contains the specified server

  • tagName : <string> // Filters to instances with tags containing the tagName

  • tagValue : <mixed> // Requires tagName. Filters to instances with tags containing the tagName and specified tagValue

  • phrase : <string> // Fuzzy matches phrase on instance name and description

Example: results = {tenantId:1, phrase: "ha"}

Groups

  • tenantId : <integer> // Database ID of tenant where groups are located. Filters to only groups added within the specified tenant. Only available in Master Tenant

  • zoneTypeId : <integer> Database ID of cloud type. Filters to only groups that contain clouds with the specified cloud type

  • zoneId : <integer>  // Database ID of cloud. Filters to only groups that contain the cloud with the specified ID

  • siteId : <integer> // Database ID of group to return

  • phrase : <string> // Fuzzy matches phrase on group name and location.

Servers

  • tenantId : <integer> // Database ID of tenant where servers are located. Filters to only servers within the specified tenant. Only available in Master Tenant

  • serverId : <integer> // Database ID of server. Filters to the server specified by the ID

  • siteZoneId : <integer> // Database ID of cloud. Filters to servers contained within the specified cloud

  • serverType : <string> // Type of server. Accepted values: ‘host’, ‘baremetal’, ‘vm’

  • siteId : <integer> // Database ID of group. Filters to only servers contained within clouds that are added in the specified group

  • tagName : <string> // Filters to servers with tags containing the tagName

  • tagValue : <mixed> // Requires tagName. Filters to servers with tags containing the tagName and specified tagValue

  • phrase : <string> // Fuzzy matches phrase on server name and description.

Example: results = {max: 50, siteZoneId : 3}

instance-wiki: Contains same options for Instances Morpheus API type.

  • phrase : <string> // Fuzzy matches phrase on wiki name, urlName and content

server-wiki: Contains same options for Servers Morpheus API type.

  • phrase : <string> // Fuzzy matches phrase on wiki name, urlName and content

LDAP Option List Fields

LDAP URL

The URL pointing to the LDAP server

USERNAME

The fully qualified username (with @ suffix syntax) for the binding account

PASSWORD

The password for the above account

LDAP Query

The LDAP query to pull the appropriate objects. See the next section for an example use case

TRANSLATION SCRIPT

Create a JS script to translate the result data object into an array containing objects with properties ‘name’ and ‘value’. The input data is provided as ‘data’ and the result should be put on the global variable ‘results’.

Note

Option Lists are set on one or multiple Select List or Typeahead Option Types. The Option Type is then set on an Instance Type, Layout, Cluster Layout, and/or Operational Workflow for input during provisioning or execution.

Creating an Option List Based on an LDAP Query

In Morpheus version 4.2.1 and higher, Option Lists can be populated from LDAP queries. This gives users the ability to search Active Directory, capture objects, and present them as custom options where needed.

It’s recommended that you connect LDAP-type Option Lists to Typeahead-type Option Types as the list of returned selections can be very large. This also allows you to select multiple options from the list, presuming you’ve allowed for that when creating the Option Type.

Populating LDAP-type Option Lists requires knowledge of LDAP query syntax. This guide provides one example and there are many publicly-available resources for help writing additional queries.

  1. Create a new Option List (Provisioning > Library > Option Lists > ADD)

  2. Enter a name for the new LDAP Option List

  3. Change the Type value to LDAP and the relevant fields will appear as shown in the screenshot:

  4. Enter the LDAP URL in the following format (an example is also shown as a placeholder in the UI form field):

ldap[s]://<hostname>:<port>/<base_dn>
  1. Enter the fully qualified username with @ suffix syntax, such as: user@ad.mycompany.com

  2. Enter the account password

  3. Enter your LDAP query. You can even inject variables into your query structure to query based on the value the user has entered into the typeahead field as shown in the example below:

(&(objectClass=user)(cn=<%=phrase%>*))
  1. Finally, enter a translation script which will convert the returned LDAP object into a list of name:value pairs you can work with in Morpheus. The example script below shows the user DisplayName and sets the value to the SAMAccountName:

for(var x=0;x < data.length ; x++) {

  var row = data[x];
  var a = {};

  if(row.displayName != null) {
    a['name'] = row.displayName;

  } else {

    a['name'] = row.sAMAccountName;

  }

  a['value'] = row.sAMAccountName;
  results.push(a);

}
  1. Click SAVE CHANGES

../../_images/ldap_option_list.png

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

Scripts

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 Provisioning > Library > Scripts

  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

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 Provisioning > Library > 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

Cluster Layouts

Note

Morpheus now syncs available (non-preview) AKS k8s versions daily. Existing synced versions that are no longer supported by Azure are automatically disabled. The table below includes available AKS versions at time of v5.3.3 release.

Users can add new cluster layouts using the +ADD button. Morpheus-provided cluster layouts can be cloned for use in creating custom layouts. Custom cluster layouts can also be deleted or edited from the list view using the pencil or trash can icons.

../../_images/clusterLayouts.png

Morpheus provided Cluster Layouts:

NAME

CODE

DESCRIPTION

Kubernetes 1.20.7 Cluster AKS

kubernetes-azure-aks-1.20.7

This provisions a single kubernetes master in Azure

Kubernetes 1.20.5 Cluster AKS

kubernetes-azure-aks-1.20.5

This provisions a single kubernetes master in Azure

Kubernetes 1.19.11 Cluster AKS

kubernetes-azure-aks-1.19.11

This provisions a single kubernetes master in Azure

Kubernetes 1.19.9 Cluster AKS

kubernetes-azure-aks-1.19.9

This provisions a single kubernetes master in Azure

Kubernetes 1.18.19 Cluster AKS

kubernetes-azure-aks-1.18.19

This provisions a single kubernetes master in Azure

Kubernetes 1.18.17 Cluster AKS

kubernetes-azure-aks-1.18.17

This provisions a single kubernetes master in Azure

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-xen-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04 in xen

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-scvmm-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04 in scvmm

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-opentelekom-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04 in opentelekom

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-nutanix-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-morpheus-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04 in manual

External Kubernetes 1.20

kubernetes-external-1.20

Connect to an external kubernetes cluster.

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-hyperv-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04 in hyperv

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-huawei-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04 in Huawei

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-openstack-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04 in Openstack

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-google-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-amazon-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04

Copy of MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

ffc21dc1-feb7-4c02-ae90-204fd080c23d

provision a kubernetes 1.20 cluster on ubuntu 18.04 in vmware

Docker Cluster on Ubuntu 18.04

docker-ubuntu-18.04.2-fusion-amd64-single

provision a docker cluster on ubuntu 18.04 in fusion

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-vmware-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04 in vmware

MKS Kubernetes 1.20 Cluster on Ubuntu 18.04

kubernetes-1.20.2-ubuntu-18.04.5-fusion-amd64-single

provision a kubernetes 1.20 cluster on ubuntu 18.04 in fusion

Kubernetes 1.17 Cluster EKS

kubernetes-amazon-eks-1.17

This will provision a single kubernetes master in amazon with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-1.17-xen-ubuntu-16.04-cluster-weave-openebs

This will provision a single kubernetes master in xen with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-xen-1.17-ubuntu-16.04-single

This will provision a single kubernetes master in xen with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-scvmm-ubuntu-18.04-cluster-weave-openebs

This will provision a single kubernetes master in scvmm with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-scvmm-ubuntu-18.04-single

This will provision a single kubernetes master in scvmm with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-openstack-ubuntu-18.04-cluster-weave-openebs

This will provision a single kubernetes master in openstack with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-openstack-ubuntu-18.04-single

This will provision a single kubernetes master in openstack with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-opentelekom-ubuntu-18.04-single

This will provision a single kubernetes master in opentelekom with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-nutanix-ubuntu-18.04-cluster-weave-openebs

This will provision a single kubernetes master in nutanix with weave and openebs

Kubernetes 1.17 HA Cluster on Linux, Weave, OpenEBS

kubernetes-1.17-morpheus-linux-cluster-weave-openebs

This will provision a kubernetes cluster with weave and openebs

Kubernetes 1.17 Cluster on Linux, Weave, OpenEBS

kubernetes-1.17-morpheus-linux-single

This will provision a single kubernetes master with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-hyperv-ubuntu-18.04-cluster-weave-openebs

This will provision a single kubernetes master in hyperv with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-hyperv-ubuntu-18.04-single

This will provision a single kubernetes master in hyperv with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-huawei-ubuntu-18.04-cluster-weave-openebs

This will provision a single kubernetes master in huawei with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-huawei-ubuntu-18.04-single

This will provision a single kubernetes master in huawei with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-google-ubuntu-18.04-cluster-weave-openebs

This will provision a single kubernetes master in google with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-google-ubuntu-18.04-single

This will provision a single kubernetes master in google with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-esxi-ubuntu-18.04-cluster-weave-openebs

This will provision a single kubernetes master in esxi with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-esxi-ubuntu-18.04-single

This will provision a single kubernetes master in esxi with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-digitalOcean-ubuntu-18.04-cluster-weave-openebs

This will provision a single kubernetes master in digitalOcean with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-digitalOcean-ubuntu-18.04-single

This will provision a single kubernetes master in digitalOcean with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-azure-ubuntu-18.04-cluster-weave-openebs

This will provision a single kubernetes master in azure with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-azure-ubuntu-18.04-single

This will provision a single kubernetes master in azure with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-amazon-ubuntu-18.04-cluster-weave-openebs

This will provision a single kubernetes master in amazon with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-amazon-ubuntu-18.04-single

This will provision a single kubernetes master in amazon with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-alibaba-ubuntu-18.04-single

This will provision a single kubernetes master in alibaba with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-vmware-ubuntu-18.04-cluster-weave-openebs

This will provision a single kubernetes master in vmware with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-vmware-ubuntu-18.04-single

This will provision a single kubernetes master in vmware with weave and openebs

Copy of Kubernetes 1.14 Cluster on Ubuntu 16.04, Weave, OpenEBS

6441b891-a61d-4f0b-a7ff-19c81d2ffd51

This will provision a single kubernetes master in vmware with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-1.17-fusion-ubuntu-18.04-single

This will provision a single kubernetes master in fusion with weave and openebs

Kubernetes 1.16 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-1.16-fusion-ubuntu-18.04-single

This will provision a single kubernetes master in fusion with weave and openebs

Kubernetes 1.15 Cluster on Ubuntu 18.04, Weave, OpenEBS

kubernetes-1.15-fusion-ubuntu-18.04-single

This will provision a single kubernetes master in fusion with weave and openebs

External Kubernetes 1.17 Cluster

kubernetes-external-1.17

This will allow access to an external kubernetes cluster

External Kubernetes 1.16 Cluster

kubernetes-external-1.16

This will allow access to an external kubernetes cluster

External Kubernetes 1.15 Cluster

kubernetes-external-1.15

This will allow access to an external kubernetes cluster

External Kubernetes 1.14 Cluster

kubernetes-external-1.14

This will allow access to an external kubernetes cluster

KVM on Ubuntu 16.04

kvm-vmware-ubuntu-16.04-single

This will provision a single kvm host vm in vmware

Morpheus KVM and Container Cluster

morpheus-kvm-combo-cluster

This will add a KVM and container host

VMware Docker CentOS 7.5

docker-vmware-centos-7.5-single

This will provision a single docker host vm in vmware

Oracle Cloud Docker Host

docker-oraclecloud-ubuntu-16.04-single

This will provision a single docker host vm in oraclecloud

Morpheus Kubernetes Manual Cluster

morpheus-kubernetes-manual-cluster

This will create a kubernetes manual (self-managed) cluster

Alibaba Docker Host

docker-alibaba-ubuntu-16.04-single

This will provision a single docker host vm in alibaba

SCVMM Docker Host

docker-scvmm-ubuntu-16.04-single

This will provision a single docker host vm in scvmm

KVM on Ubuntu 16.04

kvm-fusion-ubuntu-16.04-single

This will provision a single kvm host vm in fusion

UpCloud Docker Host

docker-upcloud-ubuntu-16.04-single

This will provision a single docker host vm in upcloud

Morpheus KVM Ubuntu Cluster

morpheus-kvm-ubuntu-cluster

This will add a KVM Ubuntu host

Morpheus KVM CentOS Cluster

morpheus-kvm-centos-cluster

This will add a KVM CentOS host

Azure Docker Host

docker-azure-ubuntu-16.04-single

This will provision a single docker host vm in azure

KVM on CentOS 7.5

kvm-vmware-centos-7.5-single

This will provision a single kvm host vm in vmware

KVM on CentOS 7.5

kvm-fusion-centos-7.5-single

This will provision a single kvm host vm in fusion

Kubernetes 1.14 HA Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-bluemix-ubuntu-16.04-cluster-weave-openebs

This will provision a single kubernetes master in bluemix with weave and openebs

Kubernetes 1.14 Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-bluemix-ubuntu-16.04-single

This will provision a single kubernetes master in bluemix with weave and openebs

Kubernetes 1.17 HA Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-vcd-ubuntu-16.04-cluster-weave-openebs

This will provision a single kubernetes master in vcd with weave and openebs

Kubernetes 1.17 Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-vcd-ubuntu-16.04-single

This will provision a single kubernetes master in vcd with weave and openebs

VCD Docker Host

docker-vcd-ubuntu-16.04-single

This will provision a single docker host vm in vcd

Kubernetes 1.14 HA Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-softlayer-ubuntu-16.04-cluster-weave-openebs

This will provision a single kubernetes master in softlayer with weave and openebs

Kubernetes 1.14 Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-softlayer-ubuntu-16.04-single

This will provision a single kubernetes master in softlayer with weave and openebs

SoftLayer Docker Host

docker-softlayer-ubuntu-16.04-single

This will provision a single docker host vm in softlayer

Open Telekom Docker Host

docker-opentelekom-ubuntu-16.04-single

This will provision a single docker host vm in opentelekom

Huawei Docker Host

docker-huawei-ubuntu-16.04-single

This will provision a single docker host vm in huawei

Google Docker Host

docker-google-ubuntu-16.04-single

This will provision a single docker host vm in google

ESXi Docker Host

docker-esxi-ubuntu-16.04-single

This will provision a single docker host vm in esxi

IBM Docker Host

docker-bluemix-ubuntu-16.04-single

This will provision a single docker host vm in bluemix

Xen Docker Host

docker-xen-ubuntu-16.04-single

This will provision a single docker host vm in xen

Digital Ocean Docker Host

docker-digitalOcean-ubuntu-16.04-single

This will provision a single docker host vm in digitalOcean

Hyper-V Docker Host

docker-hyperv-ubuntu-16.04-single

This will provision a single docker host vm in hyperv

Docker on Linux

manual-linux-docker-morpheus-single

This will add a single docker host

Kubernetes Cluster 1.14 on Ubuntu 16.04, Weave, OpenEBS

kubernetes-morpheus-ubuntu-16.04-cluster-weave-openebs

This will provision a kubernetes cluster with weave and openebs

Kubernetes 1.14 on Ubuntu 16.04, Weave, OpenEBS

kubernetes-morpheus-ubuntu-16.04-single

This will provision a single kubernetes master with weave and openebs

Docker on Bare Metal

docker-morpheus-metal-ubuntu-16.04-single

This will provision a single docker host

Docker on Ubuntu 16.04

docker-morpheus-ubuntu-16.04-single

This will provision a single docker host

Amazon Docker Host

docker-amazon-ubuntu-16.04-single

This will provision a single docker host vm in amazon

OpenStack Docker Host

docker-openstack-ubuntu-16.04-single

This will provision a single docker host vm in openstack

Nutanix Docker Ubuntu 16.04

docker-nutanix-ubuntu-16.04-single

This will provision a single docker host vm in nutanix

VMware Docker Ubuntu 16.04

docker-vmware-ubuntu-16.04-single

This will provision a single docker host vm in vmware

Kubernetes 1.14 HA Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-fusion-ubuntu-16.04-cluster-weave-openebs

This will provision a single kubernetes master in fusion with weave and openebs

Kubernetes 1.14 Cluster on Ubuntu 16.04, Weave, OpenEBS

kubernetes-fusion-ubuntu-16.04-single

This will provision a single kubernetes master in fusion with weave and openebs

Docker on Ubuntu 16.04

docker-fusion-ubuntu-16.04-single

This will provision a single docker host vm in fusion

Users can add new cluster layouts using the +ADD button. Morpheus-provided cluster layouts can be cloned for use in creating custom layouts. Custom cluster layouts can also be deleted or edited from the list view using the pencil or trash can icons.

../../_images/cloneclusterlayout.png