Automation service¶
Service description¶
The Automation service is a component of the Rumble Cloud platform that provides a template-driven engine for automating the creation, management, and scaling of cloud resources. Automation service allows you to define cloud applications and infrastructure in human-readable text files, known as templates, which describe the desired state of the resources and their relationships.
Automation service uses OpenStack Heat in conjunction with other OpenStack services.
Features¶
- Template-based orchestration, typically written in the Heat Orchestration Template (HOT) file format or AWS CloudFormation format, to define the cloud resources (such as instances, volumes, networks) and their configurations (templates can be version-controlled and reused, promoting infrastructure-as-code (IaC) practices)
- Resource management, to create, update, and delete a wide variety of resources, including instances, volumes, networks, security groups, and more, based on the definitions in the templates
- Stack management, to provide commands and API endpoints to create, update, delete, and manage stacks, allowing for the coordinated management of related resources
- Nested stacks, to allow for modular and reusable templates, enabling you to build complex cloud applications by composing smaller, reusable templates
- Rollback and recovery, for rolling back changes to a stack in case of failures during updates, helping to maintain the stability of the cloud environment
- Integration, for a unified and end-to-end coordination of cloud services
Key concepts¶
How it works¶
-
Create a template that describes the desired state of the cloud resources, including their properties, dependencies, and any configuration scripts. The template can define a wide range of resources, such as virtual machines, storage volumes, networks, and security groups.
-
Submit the template to the Automation service to create a stack. Automation service processes the template and makes the necessary API calls to the appropriate cloud services (such as Compute for virtual machine instances and Network for networking) to create and configure the resources defined in the template.
-
Automation service manages the lifecycle of the resources in the stack. You can update the stack by providing a modified template, and the service will make the necessary changes to the resources to match the new template. You can also scale resources, such as adding or removing instances in an auto-scaling group, based on predefined policies or triggers.
-
When you no longrt need the resources, delete the stack and Automation service cleans up all the resources that were created.
-
Automation service integrates with other cloud services to provide a comprehensive orchestration solution.
Template files¶
Example Heat template file
heat_template_version: 2013-05-23
description: Simple template to deploy a single compute instance
parameters:
ImageId:
type: string
description: ID of the image to use for the instance
InstanceType:
type: string
description: Type of instance to create
resources:
MyInstance:
type: OS::Nova::Server
properties:
image: { get_param: ImageId }
flavor: { get_param: InstanceType }
outputs:
InstanceIP:
description: The IP address of the deployed instance
value: { get_attr: [MyInstance, first_address] }
Parameters: These are user-defined inputs that allow customization of the template during deployment. Parameters can include things like image IDs, instance sizes, network names, and other configuration options.
Resources: This section defines the actual cloud resources to be created and managed by Heat. Each resource has a type (such as OS::Nova::Server for an instance or OS::Neutron::Net for a network) and a set of properties that specify its configuration.
Outputs: Outputs provide information about the resources created by the template, such as IP addresses, URLs, or IDs. These can be used to retrieve important information after the stack is deployed.
Conditions: Conditions allow for conditional resource creation or property assignment based on the evaluation of certain expressions. This can be useful for creating resources only under specific circumstances.
Metadata: Metadata provides additional information about the template, such as descriptions, version information, or dependencies.
Mappings: Mappings define mappings between keys and values, which can be used for lookups within the template.