Create deployment templates

Elastic Cloud Enterprise comes with some deployment templates already built in, but you can create new deployment templates to address particular use cases that you might have.

For example: You might decide to create a new deployment template, if you have a specific search use case that requires Elasticsearch data nodes in a specific configuration that also includes machine learning for anomaly detection. If you need to create these deployments fairly frequently, you can create a deployment template once and deploy it as many times as you like. Or, create a single template for both your test and production deployments to ensure they are exactly the same.

Before you begin

Before you start creating your own deployment templates, you should have: tagged your allocators to tell ECE what kind of hardware you have available for Elastic Stack deployments. If the default instance configurations don’t provide what you need, you might also need to create your own instance configurations first.

Create deployment templates in the UI

  1. Log into the Cloud UI.
  2. From the Platform menu, select Templates.
  3. Click Create template.
  4. Configure Elasticsearch by picking the node configurations that will be available in the template and by assigning their initial resources. You can:

    • Adjust the memory or storage assigned to instance configurations using our sliders. Increasing memory or storage also improves performance by increasing the CPU resources that get assigned relative to the size of the instance, meaning that a 32 GB instance gets twice as much CPU resources as a 16 GB one. These resources are just template defaults that can be adjusted further before you create actual deployments.
    • Add fault tolerance (high availability) by using more than one availability zones.
    • Add Elasticsearch user settings.
    • Add and configure additional features, such as:

      • Dedicated master nodes
      • Dedicated ingest nodes
      • Machine learning nodes

        For example: You can could create your template with a large Elasticsearch data node to handle data indexing, include a basic machine learning configuration to allow enabling anomaly detection later on, and then add Kibana to the template to enable data visualization.

        Tip

        To create templates that support a hot-warm architecture, include more than one instance configuration for data nodes by clicking Add data configuration. The option to edit index curation settings becomes available when at least two data configurations are part of the template.

  5. Click Next.
  6. If you added multiple Elasticsearch data configurations on the previous page, such as data.default and data.highstorage: Configure index management.
  7. Configure how other Elastic products, like Kibana instances or APM Servers, get included in your template. You can select if they are included at all, what high availability options and sizes are available, and what user settings should always be specified.
  8. Give your deployment template a name and include a description that reflects its intended use.
  9. Click Save and create template.

Create deployment templates through the RESTful API:

  1. Obtain the existing deployment templates to see some examples of what the required JSON looks like. You can take the JSON for one of the existing templates and modify it to create a new template, similar to what gets shown in the next step.

    curl -k -X GET -u $USER:$PASSWORD https://$COORDINATOR_HOST:12443/api/v1/platform/configuration/templates/deployments

    A user with sufficient privileges, such as the admin user

    The password for the user

    A host that you installed Elastic Cloud Enterprise on that holds the coordinator role, such as a host where you can log into the Cloud UI.

  2. Post the JSON for your new deployment template.

    The following example creates a deployment template that defaults to a highly available Elasticsearch cluster with 4 GB per node, a 16 GB machine learning node, and a 1 GB Kibana instance. Elasticsearch and Kibana use the default instance configurations, but the machine learning node is based on the custom instance configuration in our previous example.

    curl -k -X POST -u $USER:$PASSWORD https://$COORDINATOR_HOST:12443/api/v1/platform/configuration/templates/deployments/ -H 'content-type: application/json' -d '{
      "name": "Custom Elasticsearch and ML template",
      "description": "Custom template that includes Elasticsearch, machine learning, and Kibana",
      "cluster_template": {
        "plan": {
          "cluster_topology": [{
            "size": {
              "value": 4096,
              "resource": "memory"
            },
            "node_type": {
              "master": true,
              "data": true,
              "ingest": true
            },
            "instance_configuration_id": "data.default",
            "elasticsearch": {
              "user_settings_yaml": "",
              "node_attributes": {
    
              }
            },
            "zone_count": 3
          }, {
            "size": {
              "value": 16384,
              "resource": "memory"
            },
            "node_type": {
              "master": false,
              "data": false,
              "ingest": false,
              "ml": true
            },
            "instance_configuration_id": "b092529897194a45808ae70ec5270c6b",
            "elasticsearch": {
    
            },
            "zone_count": 1
          }],
          "elasticsearch": {
    
          }
        },
        "settings": {
    
        },
        "kibana": {
          "plan": {
            "cluster_topology": [{
              "instance_configuration_id": "kibana",
              "size": {
                "value": 1024,
                "resource": "memory"
              },
              "zone_count": 1
            }],
            "kibana": {
              "user_settings_yaml": ""
            }
          }
        }
      },
      "system_owned": false
    }'

After you have saved your new template, you can start creating new deployments with it.