Service Plans

The a9s Service Broker can provide different services and service plans. Which services and service plans are provided can be configured in the specific service config for each service e.g. the postgresql.yml.example.

Service Plan Configuration

The configuration for each service plans looks the same. That's why we will have a exemplary look at the configuration of the postgresql-single-small plan of PostgreSQL 10:

plans:
  postgresql-single-small:
    guid: a6747d74-580f-4520-98c5-5ffe3dc20b5a
    description: 'a small single instance'
    free: true
    template_name: postgresql10-single
    template_name_v2: postgresql10-single
    default_placeholder_values:
      vm_type: a9svs-postgresql-single-small
      persistent_disk_type: a9svs-postgresql-single-small
    migration_paths:
      - postgresql-single-medium
      - postgresql-single-big
      - postgresql-replica-small
      - postgresql-replica-medium
      - postgresql-replica-big

Each service plan has the following properties:

  • name: The name of the service plan. Has to be unique within the service but can be used in other services as service plan name too. In this example postgresql-single-small.
  • guid: The distinct identifier of the service plan. Has to be unique across all services and service plans.
  • description: The description of the service plan.
  • free: If the plan can be used for free or not.
  • template_name: Deprecated The name of the template that should be used when a service instance of this service plan is created.
  • template_name_v2: The name of the template that should be used when a service instance of this service plan is created.

In the following we will have a more detailed look at the properties default_placeholder_values and migration_paths.

Default Placeholder Values

The property default_placeholder_values is a list of values that will be replaced in the template that is used for the given service plan. The templates itself are YAML files that contain ERB tags with variables that can be replaced.

This is an example extract of the postgresql10-single template:

jobs:
- name: pg
  vm_type: <%= vm_type %>
  instances: 1
  azs: [z3,z2,z1]
  stemcell: ((stemcell_alias))
  persistent_disk_type: <%= persistent_disk_type %>

Currently the a9s Service Broker supports the following placeholder values:

  • vm_type: The VM type that should be used for the service instance. Has to match one of the VM types that are defined in the cloud-config of your setup.
  • persistent_disk_type: The persistent disk type that should be used for the service instance. Has to match one of the disk types that are defined in the cloud-config of your setup.

Migration Paths

The migration_paths property defines to which service plans the given service plan can be migrated. In the example above the postgresql-single-small plan can be migrated to the plans:

  • postgresql-single-medium
  • postgresql-single-big
  • postgresql-replica-small
  • postgresql-replica-medium
  • postgresql-replica-big

NOTE: You can only migrate to service plans of the same service. For example it is not possible to migrate a PostgreSQL 10 single-small service instance to a PostgreSQL 11 single-medium service instance.

IMPORTANT: The a9s Data Services do not support the migration to service plans with smaller VM type or smaller persistent disk type or from clustered instances to single instances.

Available Templates

The templates that can be used for the different service plans are provided by the template-uploader-errand. There are templates for each a9s Data Service.

a9s Elasticsearch

template namedescription
elasticsearch2-cluster-ssl.ymlA clustered Elasticsearch 2 instance with ssl enabled
elasticsearch2-cluster.ymlA clustered Elasticsearch 2 instance
elasticsearch2-single-no-logging-ssl.ymlA single Elasticsearch 2 instance without Logstash with ssl enabled
elasticsearch2-single-no-logging.ymlA single Elasticsearch 2 instance without Logstash
elasticsearch2-single-ssl.ymlA single Elasticsearch 2 instance with ssl enabled
elasticsearch2-single.ymlA single Elasticsearch 2 instance
elasticsearch5-cluster-ssl.ymlA clustered Elasticsearch 2 instance with ssl enabled
elasticsearch5-cluster.ymlA clustered Elasticsearch 2 instance with ssl enabled
elasticsearch5-single-no-logging-ssl.ymlA single Elasticsearch 5 instance without Logstash with ssl enabled
elasticsearch5-single-no-logging.ymlA single Elasticsearch 5 instance without Logstash
elasticsearch5-single-ssl.ymlA single Elasticsearch 5 instance with ssl enabled
elasticsearch5-single.ymlA single Elasticsearch 5 instance
elasticsearch6-cluster-ssl.ymlA clustered Elasticsearch 6 instance with ssl enabled
elasticsearch6-cluster.ymlA clustered Elasticsearch 6 instance
elasticsearch6-single-no-logging-ssl.ymlA single Elasticsearch 6 instance without Logstash with ssl enabled
elasticsearch6-single-no-logging.ymlA single Elasticsearch 6 instance without Logstash
elasticsearch6-single-ssl.ymlA single Elasticsearch 6 instance with ssl enabled
elasticsearch6-single.ymlA single Elasticsearch 6 instance with ssl enabled

a9s MongoDB

template namedescription
mongodb32-replica.ymlA MongoDB 3.2 replica set
mongodb32-single-no-logging.ymlA MongoDB 3.2 single instance without Logstash
mongodb32-single.ymlA MongoDB 3.2 single instance
mongodb34-replica-ssl.ymlA MongoDB 3.4 replica set with ssl enabled
mongodb34-replica.ymlA MongoDB 3.4 replica set
mongodb34-single-no-logging-ssl.ymlA MongoDB 3.4 single instance without Logstash with ssl
mongodb34-single-no-logging.ymlA MongoDB 3.4 single instance without Logstash
mongodb34-single-ssl.ymlA MongoDB 3.4 single instance with ssl enabled
mongodb34-single.ymlA MongoDB 3.4 single instance
mongodb36-replica-ssl.ymlA MongoDB 3.6 replica set with ssl enabled
mongodb36-replica.ymlA MongoDB 3.6 replica set
mongodb36-single-no-logging-ssl.ymlA MongoDB 3.6 single instance without Logstash with ssl
mongodb36-single-no-logging.ymlA MongoDB 3.6 single instance without Logstash
mongodb36-single-ssl.ymlA MongoDB 3.6 single instance with ssl enabled
mongodb36-single.ymlA MongoDB 3.6 single instance
mongodb40-replica-ssl.ymlA MongoDB 4.0 replica set with ssl enabled
mongodb40-replica.ymlA MongoDB 4.0 replica set
mongodb40-single-no-logging-ssl.ymlA MongoDB 4.0 single instance without Logstash with ssl
mongodb40-single-no-logging.ymlA MongoDB 4.0 single instance without Logstash
mongodb40-single-ssl.ymlA MongoDB 4.0 single instance with ssl enabled
mongodb40-single.ymlA MongoDB 4.0 single instance

a9s MySQL

template namedescription
mysql101-cluster.ymlA MySQL Galera cluster
mysql101-single-no-logging.ymlA MySQL single instance without Logstash
mysql101-single.ymlA MySQL single instance

a9s PostgreSQL

template namedescription
postgresql10-replica-ssl.ymlA clustered PostgreSQL 10 instance with ssl enabled 
postgresql10-replica.yml A clustered PostgreSQL 10 instance
postgresql10-single-no-logging-ssl.yml A single PostgreSQL 10 instance without Logstash with ssl enabled
postgresql10-single-no-logging.yml A single PostgreSQL 10 instance without Logstash
postgresql10-single-ssl.yml A single PostgreSQL 10 instance with ssl enabled
postgresql10-single.yml A single PostgreSQL 10 instance
postgresql11-replica-ssl.yml A clustered PostgreSQL 11 instance with ssl enabled
postgresql11-replica.yml A clustered PostgreSQL 11 instance
postgresql11-single-no-logging-ssl.yml A single PostgreSQL 11 instance without Logstash with ssl enabled
postgresql11-single-no-logging.yml A single PostgreSQL 11 instance without Logstash
postgresql11-single-ssl.yml A single PostgreSQL 11 instance with ssl enabled
postgresql11-single.yml A single PostgreSQL 11 instance
postgresql94-replica-ssl.ymlA clustered PostgreSQL 9.4 instance with ssl enabled 
postgresql94-replica.ymlA clustered PostgreSQL 9.4 instance 
postgresql94-single-no-logging-ssl.ymlA single PostgreSQL 9.4 instance without Logstash with ssl enabled
postgresql94-single-no-logging.ymlA single PostgreSQL 9.4 instance without Logstash
postgresql94-single-ssl.ymlA single PostgreSQL 9.4 instance with ssl enabled
postgresql94-single.ymlA single PostgreSQL 9.4 instance 

a9s Messaging

template namedescription
rabbitmq36-replica-ssl.yml A single RabbitMQ 3.6 instance with ssl
rabbitmq36-replica.ymlA single RabbitMQ 3.6 instance 
rabbitmq36-single-no-logging-ssl.yml A single RabbitMQ 3.7 instance without Logstash with ssl enabled
rabbitmq36-single-no-logging.yml A single RabbitMQ 3.6 instance without Logstash
rabbitmq36-single-ssl.yml A single RabbitMQ 3.6 instance with ssl enabled
rabbitmq36-single.yml A single RabbitMQ 3.6 instance
rabbitmq37-replica-ssl.ymlA clustered RabbitMQ 3.7 instance with ssl enabled 
rabbitmq37-replica.ymlA clustered RabbitMQ 3.7 instance 
rabbitmq37-single-no-logging-ssl.ymlA single RabbitMQ 3.7 instance without Logstash with ssl enabled 
rabbitmq37-single-no-logging.ymlA single RabbitMQ 3.7 instance without Logstash 
rabbitmq37-single-ssl.ymlA single RabbitMQ 3.7 instance with ssl enabled 
rabbitmq37-single.yml A single RabbitMQ 3.7 instance

a9s Redis

template namedescription
redis-cluster.ymlA clustered Redis 3.2 instance 
redis-single-no-logging.yml A single Redis 3.2 instance without Logstash
redis-single.yml A single Redis 3.2 instance
redis40-cluster.yml A clustered Redis 4.0 instance
redis40-single-no-logging.yml  A single Redis 4.0 instance without Logstash
redis40-single.yml A single Redis 4.0 instance
redis50-cluster.yml A clustered Redis 5.0 instance
redis50-single-no-logging.yml A single Redis 5.0 instance
redis50-single.yml A single Redis 5.0 instance

a9s LogMe

template namedescription
logme-cluster.yml A clustered LogMe instance with 3 Elasticsearch nodes
logme-platform-logging.yml A clustered LogMe instance with 5 Elasticsearch nodes
logme-single.yml A single LogMe instance

a9s Prometheus

template namedescription
prometheus-plattform-ssl.ymlA single Prometheus instance for platform logging with ssl that can only deployed once 
prometheus-plattform.yml A single Prometheus instance for platform logging that can only deployed once
prometheus-single-ssl.yml A single Prometheus instance with ssl enabled
prometheus-single.ymlA single Prometheus instance 

a9s Kubernetes

template namedescription
kubernetes-rancher-one-node.ymlA single Kubernetes instance with Rancher that has only one masteer node
kubernetes.ymlA template for Kubernetes instances with different master and worker node configuration
kubernetes-rancher.ymlA template for Kubernetes instances with Rancher with different master and worker node configuration

When using the kubernetes.yml or kubernetes-rancher.yml template, you'll have to specify the following additional parameters under default_placeholder_values:

  • master_node_count
  • worker_node_count

Example:

plans:
  kubernetes-cluster-small:
    ...
    template_name_v2: kubernetes
    default_placeholder_values:
      master_node_count: [Integer]
      worker_node_count: [Integer]
    ...
  kuberntes-rancher-cluster:
    ...
    template_name_v2: kubernetes-rancher
    default_placeholder_values:
      master_node_count: [Integer]
      worker_node_count: [Integer]
    ...

Add New Service Plans

If you want to provide another service plan that is not offered by default, you can add your new service plan to the service config. Currently, it is only possible to add plans that differ in the VM type and the persistent disk type.

For the new service plan you have to define the same properties like for the default service plans:

  • guid
  • description
  • free
  • template_name
  • default_placeholder_values
  • migration_paths

A new plan with a bigger VM and persistent disk could look the following way:

postgresql-single-ultra:
    guid: 8abb159a-b79e-41ee-a374-0a7dccf6723a
    description: 'a ultra single instance'
    free: true
    template_name: postgresql10-single
    default_placeholder_values:
      vm_type: a9svs-postgresql-single-ultra
      persistent_disk_type: a9svs-postgresql-single-ultra
    migration_paths: []

NOTE: You have to use one of the existing templates for the new service plan.

NOTE2: If you want to use other VM types or disk types you have to add them also to your cloud-config.

IMPORTANT: The a9s Data Services do not support the migration to service plans with smaller VM type or smaller persistent disk type or from clustered instances to single instances. So you have to be careful when you define the migration_paths for a new servie plan.

Deleting service plans

It is also possible to delete service plans for a given service. These service plans won't be provided by the a9s Service Broker. To do this you have to remove the configuration for the service plan you want to delete from the specific service config. Then you have to deploy the service again with the new service config.

NOTE: Currently, it is not possible to delete service plans for which service instances have been created. Only unused service plans can be deleted.

Customizing the Documentation and Support URLs

If you want to customize the Documentation and/or Support URLs of a service, you can do so by replacing the values of supportUrl and documentationUrl with your own. These are located in the metadata property, on the service config, as shown below:

 metadata:
        displayName: "a9s PostgreSQL 10"
        supportUrl: https://dssupport.anynines.com
        documentationUrl: https://docs.anynines.com
        shareable: true