Relational database services such as Amazon Relational Database Service (RDS) provide
cloud-based databases. You can model these databases in blueprints and connect applications to
them.
In your components, create properties that refer to the address or other details about the
database. For example, add component environment properties that refer to the endpoint location and
port of the database. Then, you can use those properties in component processes. In this way, you
provide information about the database to the application components so that when the components are
installed, they can connect to the database.
You can model a new database or an existing database in a blueprint. Amazon RDS is the only
type of database service that is supported.
-
In the blueprint editor, from the Services drawer, drag the
New RDS Instance to the blueprint to create a database, or drag an existing
database to the blueprint.
-
If you are creating a database, specify the information about the database, such as the type of
database and the size of the instance.
The following example shows a database that is named
my_database
:
my_database:
type: IBM::RDS::Instance
properties:
name: my_database
db_instance_class: db.m1.small
engine: mysql
engine_version: 5.6.19a
availability_zone: { get_param: availability_zone }
master_username:
master_password:
vpc_security_group_ids:
subnet_group:
parameter_group:
-
If you are creating a database, specify the security group for the database by dragging the
security group from the Security drawer of the palette.
The security group controls which Virtual Private Cloud (VPC) the database is created in. By
default, images can access only databases that are in the same VPC.
-
From the Components drawer, add one or more components to images in the
blueprint.
In the blueprint, the component resources have properties that refer to the properties
on the IBM® UrbanCode® Deploy server.
-
Link the properties in the component to the properties of the database.
To link a component to the
my_database
database, the code might look
like the following example. In this example, the component has properties that are named
ClusterEndpointPort
and
ClusterEndpointAddress
. The component uses
these property values to access the database. To provide the property values, refer to the matching
property on the database resource, as in this
example:
databasecomp_sw_config:
type: IBM::UrbanCode::SoftwareConfig::UCD
properties:
name: "Database-accessing component"
component_process: deploy
component_process_timeout: "300"
ucd_server_url: { get_param: ucd_server_url } # these should come from resource_tree
ucd_username: { get_param: ucd_user }
ucd_password: { get_param: ucd_password }
application: { get_attr: [resource_tree, application_name] }
environment_name: { get_attr: [resource_tree, environment_name] }
inputs:
endpoint_port : { get_attr: [my_database, endpoint_address] }
endpoint_address : { get_attr: [my_database, endpoint_port] }
-
Create a configuration file and map the types in the blueprint to the matching Amazon
types.
When you provision an environment from this blueprint, the component can access the
database.Note: If you provision an environment that contains a new database and then delete the
environment, the database is also deleted.