Implementing Orchestration

The Metacloud Orchestration service is compatible with these flexible template languages that enable application developers to describe and automate the deployment of infrastructure, services, and applications:

  • Amazon Web Services (AWS) CloudFormation
  • OpenStack Heat Orchestration Template (HOT)

Templates are in two formats: JSON for AWS compatibility and YAML for native Metacloud deployments. An HOT enables the creation of most Metacloud resource types, such as instances, floating IP addresses, volumes, security groups, and users. You must indicate the HOT version that corresponds to the Liberty release of OpenStack. The heat template version is the first line of the template file:

heat_template_version: 2013-05-23

To list the available template versions:

$ openstack orchestration template version list
+--------------------------------------+------+
| Version                              | Type |
+--------------------------------------+------+
| heat_template_version.2014-10-16     | hot  |
| heat_template_version.2015-04-30     | hot  |
| HeatTemplateFormatVersion.2012-12-12 | cfn  |
| heat_template_version.2015-10-15     | hot  |
| AWSTemplateFormatVersion.2010-09-09  | cfn  |
| heat_template_version.2013-05-23     | hot  |
+--------------------------------------+------+

Prerequisites—You must prepare your environment to access the command-line interface:

Orchestration requires the Heat client installation. To install the OpenStack Heat Client:

(virtualenv_name) $ pip install python-heatclient

Confirm the Heat client installed properly and the Orchestration service is available by listing the resource types supported by Metacloud:

$ openstack orchestration resource type list
+------------------------------------------+
| Resource Type                            |
+------------------------------------------+
| AWS::AutoScaling::AutoScalingGroup       |
| AWS::AutoScaling::LaunchConfiguration    |
| AWS::AutoScaling::ScalingPolicy          |
| AWS::CloudFormation::Stack               |
| AWS::CloudFormation::WaitCondition       |
| AWS::CloudFormation::WaitConditionHandle |
| AWS::CloudWatch::Alarm                   |
| AWS::EC2::EIP                            |
| AWS::EC2::EIPAssociation                 |
| AWS::EC2::Instance                       |
| AWS::EC2::InternetGateway                |
| AWS::EC2::NetworkInterface               |
| AWS::EC2::RouteTable                     |
| AWS::EC2::SecurityGroup                  |
| AWS::EC2::Subnet                         |
| AWS::EC2::SubnetRouteTableAssociation    |
| AWS::EC2::VPC                            |
| AWS::EC2::VPCGatewayAttachment           |
| AWS::EC2::Volume                         |
| AWS::EC2::VolumeAttachment               |
| AWS::ElasticLoadBalancing::LoadBalancer  |
| AWS::IAM::AccessKey                      |
| AWS::IAM::User                           |
| AWS::RDS::DBInstance                     |
| OS::Cinder::EncryptedVolumeType          |
| OS::Cinder::Volume                       |
| OS::Cinder::VolumeAttachment             |
| OS::Cinder::VolumeType                   |
| OS::Glance::Image                        |
| OS::Heat::AccessPolicy                   |
| OS::Heat::AutoScalingGroup               |
| OS::Heat::CloudConfig                    |
| OS::Heat::HARestarter                    |
| OS::Heat::InstanceGroup                  |
| OS::Heat::MultipartMime                  |
| OS::Heat::None                           |
| OS::Heat::RandomString                   |
| OS::Heat::ResourceGroup                  |
| OS::Heat::ScalingPolicy                  |
| OS::Heat::SoftwareComponent              |
| OS::Heat::SoftwareConfig                 |
| OS::Heat::SoftwareDeployment             |
| OS::Heat::SoftwareDeploymentGroup        |
| OS::Heat::SoftwareDeployments            |
| OS::Heat::Stack                          |
| OS::Heat::StructuredConfig               |
| OS::Heat::StructuredDeployment           |
| OS::Heat::StructuredDeploymentGroup      |
| OS::Heat::StructuredDeployments          |
| OS::Heat::TestResource                   |
| OS::Heat::UpdateWaitConditionHandle      |
| OS::Heat::WaitCondition                  |
| OS::Heat::WaitConditionHandle            |
| OS::Keystone::Endpoint                   |
| OS::Keystone::Group                      |
| OS::Keystone::GroupRoleAssignment        |
| OS::Keystone::Project                    |
| OS::Keystone::Role                       |
| OS::Keystone::Service                    |
| OS::Keystone::User                       |
| OS::Keystone::UserRoleAssignment         |
| OS::Neutron::ExtraRoute                  |
| OS::Neutron::Firewall                    |
| OS::Neutron::FirewallPolicy              |
| OS::Neutron::FirewallRule                |
| OS::Neutron::FloatingIP                  |
| OS::Neutron::FloatingIPAssociation       |
| OS::Neutron::HealthMonitor               |
| OS::Neutron::IKEPolicy                   |
| OS::Neutron::IPsecPolicy                 |
| OS::Neutron::IPsecSiteConnection         |
| OS::Neutron::LoadBalancer                |
| OS::Neutron::MeteringLabel               |
| OS::Neutron::MeteringRule                |
| OS::Neutron::Net                         |
| OS::Neutron::NetworkGateway              |
| OS::Neutron::Pool                        |
| OS::Neutron::PoolMember                  |
| OS::Neutron::Port                        |
| OS::Neutron::ProviderNet                 |
| OS::Neutron::Router                      |
| OS::Neutron::RouterInterface             |
| OS::Neutron::SecurityGroup               |
| OS::Neutron::Subnet                      |
| OS::Neutron::VPNService                  |
| OS::Nova::FloatingIP                     |
| OS::Nova::FloatingIPAssociation          |
| OS::Nova::KeyPair                        |
| OS::Nova::Server                         |
| OS::Nova::ServerGroup                    |
+------------------------------------------+

Note
Detailed definitions for the resource types are on the Heat Template Guide site.