PGaaS Plugin
Cloudify PGaaS plugin description and configuraiton # Description The PGaaS plugin allows users to deploy PostgreSQL application databases, and retrieve access credentials for such databases, as part of a Cloudify blueprint. # Plugin Requirements * Python versions * 2.7.x * System dependencies * psycopg2
Note: These requirements apply to the VM where Cloudify Manager itself runs.
Note: The psycopg2 requirement is met by running “yum install python-psycopg2” on the Cloudify Manager VM.
Note: Cloudify Manager, itself, requires Python 2.7.x (and Centos 7).
Types
dcae.nodes.pgaas.cluster
Derived From: cloudify.nodes.Root
Properties:
writerfqdn
(required string) The FQDN used for read-write access to the cluster containing the postgres database instance. This is used to identify and access a particular database instance and to record information about that instance on Cloudify Manager.use_existing
(optional boolean default=false) This is used to reference a database instance, in one blueprint, that was deployed in a different one. If it istrue
, then thereaderfqdn
property must not be set and this node must not have anydcae.relationships.pgaas_cluster_uses_sshkeypair
relationships. If it isfalse
, then this node must have exactly onedcae.relationships.pgaas_cluster_uses_sshkeypair
relationship.readerfqdn
(optional string default=value ofwriterfqdn
) The FQDN used for read-only access to the cluster containing the postgres database instance, if different than the FQDN used for read-write access. This will be used by viewer roles.
Mapped Operations:
cloudify.interfaces.lifecycle.create
validates and records information about the cluster on the Cloudify Manager server in /opt/manager/resources/pgaas/writerfqdn
.cloudify.interfaces.lifecycle.delete
deletes previously recorded information from the Cloudify Manager server.
Note: When use_existing
is true
, the create operation validates
but does not record, and delete does nothing. Delete also does nothing
when validation has failed.
Attributes: This type has no runtime attributes
dcae.nodes.pgaas.database
Derived From: cloudify.nodes.Root
Properties: * name
(required string) The name of the
application database, in postgres. This name is also used to create the
names of the roles used to access the database, and the schema made
available to users of the database. * use_existing
(optional
boolean default=false) This is used to reference an application
database, in one blueprint, that was deployed in a different one. If
true, and this node has a
dcae.relationships.database_runson_pgaas_cluster relationship, the
dcae.nodes.pgaas.cluster node that is the target of that relationship
must also have it’s use_existing
property set to true. *
writerfqdn
(optional string) This can be used as an alternative to
specifying the cluster, for the application database, with a
dcae.relationships.database_runson_pgaas_cluster relationship to a
dcae.nodes.pgaas.cluster node. Exactly one of the two options must be
used. The relationship method must be used if this blueprint is
deploying both the cluster and the application database on the cluster.
Mapped Operations:
cloudify.interfaces.lifecycle.create
creates the application database, and various roles for admin/user/viewer access to it.cloudify.interfaces.lifecycle.delete
deletes the application database and roles
Note: When use_existing
is true, create and delete do not create or
delete the application database or associated roles. Create still sets
runtime attributes (see below).
Attributes:
admin
a dict containing access information for adminstrative access to the application database.user
a dict containing access information for user access to the application database.viewer
a dict containing access information for read-only access to the application database.
The keys in the access information dicts are as follows:
database
the name of the application database.host
the appropriate FQDN for accessing the application database, (writerfqdn or readerfqdn, based on the type of access).user
the user role for accessing the database.password
the password corresponding to the user role.
Relationships
dcae.relationships.pgaas_cluster_uses_sshkeypair
Description: A relationship for binding a dcae.nodes.pgaas.cluster node to the dcae.nodes.ssh.keypair used by the cluster to initialize the database access password for the postgres role. The password for the postgres role is expected to be the hex representation of the MD5 hash of ‘postgres’ and the contents of the id_rsa (private key) file for the ssh keypair. A dcae.nodes.pgaas.cluster node must have such a relationship if and only if it’s use_existing property is false. ## dcae.relationships.dcae.relationships.database_runson_pgaas_cluster Description: A relationship for binding a dcae.nodes.pgaas.database node to the dcae.nodes.pgaas.cluster node that contains the application database. A dcae.nodes.pgaas.database node must have either such a relationship or a writerfqdn property. The writerfqdn property cannot be used if the cluster is created in the same blueprint as the application database. ## dcae.relationships.application_uses_pgaas_database Description: A relationship for binding a node that needs application database access information to the dcae.nodes.pgaas.database node for that application database.