Service Plans
This section describes how to configure a Service Plan for a Service Offering within the Service Catalog.
Service Plan Object
Each Service Plan has the following properties:
Property | Type | Description |
---|---|---|
name * | string | The name of the Service Plan. MUST be unique within the Service, but can can als be used in other Services as Service Plan name. Using a CLI-friendly name is RECOMMENDED. |
guid * | string | The GUID of the service plan. This MUST be unique across the entire platform. |
description * | string | A short description of the Service Plan. |
free | boolean | When false , service instances of this service plan have a cost. The default is true . |
template_name | string | Deprecated in favor of template_name_v2 . |
template_name_v2 * | string | A template name described in Available Templates. This template is used when a service instance with this service plan is created. |
ssl | boolean | true when a TLS/SSL template is used, false otherwise. The default is false . |
service_deployment_prefix | DeploymentNamePrefix | The deployment name prefix for service instances created with this plan. |
default_placeholder_values * | DefaultPlaceholderValues | A list of values that will be replaced in the used template for this service plan. |
migration_paths * | MigrationPaths | The list of allowed plan updates. |
custom_param_config | CustomParameterConfiguration | The name of the template that should be used when a service instance of this service plan is created. |
NOTE: Fields with an asterisk (*
) are REQUIRED.
Example:
postgresql-single-small-ssl:
guid: a6747d74-580f-4520-98c5-5ffe3dc20b5a
description: A small single instance
free: true
template_name_v2: postgresql13-single-ssl
ssl: true
service_deployment_prefix: pg
default_placeholder_values:
vm_type: a9svs-postgresql-single-small
persistent_disk_type: a9svs-postgresql-single-small
network_type: a9svs-postgresql-single-small
migration_paths:
- postgresql-single-medium-ssl
- postgresql-single-large-ssl
custom_param_config:
max_connections:
default_value: 100
modifiable: false
Deployment Name Prefix
By default, the deployment names for the service instances that the a9s Service Broker creates are in the schema
d<2 digits><2 hex digits>
. These names can be extended with a prefix that can be configured per service plan via the
service_deployment_prefix
property. The prefix can be changed at any time without affecting the service instances
already provisioned.
The prefix must only contain small letters [a-z] and should not exceed the length of 3 characters (otherwise problems with the generated DNS names may occur).
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 themselves are YAML files that contain ERB
tags with variables that can be replaced.
The following placeholder values are supported by the Available Templates:
Property | Type | Default Value | Description |
---|---|---|---|
vm_type | string | The VM type that should be used for the Service Instance. MUST match one of the VM types defined in the Cloud Config of the used BOSH Director. | |
persistent_disk_type | string | The persistent disk type that should be used for the Service Instance. MUST match one of the disk types defined in the Cloud Config of the used BOSH Director. | |
network_type | string | The configured service_network in the a9s Template Uploader Errand | The network that should be used by the Service Instance. MUST match one of the networks defined in the Cloud Config of the used BOSH Director. |
Example:
postgresql_service:
services:
a9s-postgresql13:
plans:
postgresql-single-small-ssl:
default_placeholder_values:
vm_type: postgresql-single-small-vm
persistent_disk_type: postgresql-single-small-disk
network_type: postgresql-single-small-network
Network Per Plan
In order to configure a different network per Service Plan, it is necessary to modify the Service Plan configuration and
add network_type
property under the default_placeholder_values
property in each desired Service Plan.
In the following configuration snippet, the Service Plan postgresql-single-nano
has been configured to use the network
<your_desired_network>
:
---
postgresql_service:
services:
a9s-postgresql13:
plans:
postgresql-single-nano:
default_placeholder_values:
network_type: "<your_desired_network>"
vm_type: a9svs-postgresql-single-nano
postgresql-single-small:
default_placeholder_values:
vm_type: a9svs-postgresql-single-small
On the other hand, the plan postgresql-single-small
in the above example will be deployed to the default network,
given by the template variable service_network
in the a9s Template Uploader Errand configuration, since the property
network_type
has not been set.
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-ssl
plan can be migrated to the plans:
postgresql-single-medium-ssl
postgresql-single-large-ssl
The following limitations apply to all a9s Data Services:
- The a9s Data Services do NOT support the migration from templates from one major version to templates from another major version of the same a9s Data Service. For example, it is not possible to migrate from a PostgreSQL 11 Service Instance to a PostgreSQL 13 Service Instance.
- The a9s Data Services do NOT support Service Plan migrations from a larger VM type to a smaller VM type.
- The a9s Data Services do NOT support Service Plan migrations from a larger persistent disk to a smaller persistent disk.
- The a9s Data Services do NOT support Service Plan migrations from clustered to single Service Instances.
- The a9s Data Services do NOT support Service Plan migrations from Non-SSL/TLS to SSL/TLS Service Instances.
If you face one of these limitations, we recommend to create a new Service Instance that fulfills the new requirements and migrate the data to it accordingly. You have to make sure that the new Service Instance has enough disk space available to hold the user data.
a9s Redis® 6 and above, and all a9s KeyValue instances do NOT support Service Plan migrations from single to clustered/replica Service Instances.
Custom Parameter Configuration
Some a9s SPIs allow the Platform Operator to give default values to custom parameters in the SPI configuration. If the Platform Operator doesn't configure the SPI configuration, the anynines defaults get used as described in the individual SPI configuration page:
- a9s KeyValue SPI Configuration
- a9s LogMe 2 SPI Configuration
- a9s MariaDB SPI Configuration
- a9s Messaging SPI Configuration
- a9s MongoDB SPI Configuration
- a9s PostgreSQL SPI Configuration
- a9s Redis® SPI Configuration
You can configure those properties per plan under the property custom_param_config
. The same configuration structure
applies.
For example, the following configuration for the plan postgresql-single-nano
would set the max_connections
custom
parameter default value to 100
and would not allow the Application Developer to modify this value:
...
plans:
postgresql-single-nano:
custom_param_config:
max_connections:
default_value: 100
modifiable: false
...
IMPORTANT: When the platform operator configures the SPI's and a plan's custom parameter configuration, the plan's custom parameter configuration will completely replace the SPI's custom parameter configuration for that specific plan.
Let's take the following example for a SPI and plan configuration:
postgresql-spi:
service_instance:
custom_param_config:
max_connections:
default_value: 200
modifiable: true
metric_pg_database_size:
default_value: 600
modifiable: false
...
plans:
postgresql-single-nano:
custom_param_config:
max_connections:
default_value: 100
modifiable: false
...
In this case, an instance of plan postgresql-single-nano
would be configured to set the max_connections
default
value to 100
and be not modifiable for the application developer. The custom parameter metric_pg_database_size
would
not be set to the values configured in the SPI configuration, but the SPI default values for that custom parameter.
*Redis is a registered trademark of Redis Ltd. Any rights therein are reserved to Redis Ltd. Any use by anynines GmbH is for referential purposes only and does not indicate any sponsorship, endorsement or affiliation between Redis and anynines GmbH.