OpenStack plugin

15 minute readExtensibilityDeveloper productivity

OpenStack is an Infrastructure as a Service (IaaS) cloud computing project by Rackspace Cloud and NASA. It is free, open-source software released under the terms of the Apache License. The mission of the OpenStack project is to enable any organization to create and offer cloud computing services running on standard hardware. The community’s first official release, code-named Austin, was made available just four months later with plans to release regular updates of the software every few months. OpenStack integrates code from NASA’s Nebula platform as well as Rackspace’s Cloud Files platform.

The OpenStack plugin allows you to build a cloud by launching images and assigning metadata to instances, providing a more generic interface for managing resources. It interacts with OpenStack through the Compute API and Image API using PERL to perform the following tasks:

  • Create configurations with the connection information.

  • Perform actions on machines.

  • Deploy and delete servers.

  • Create and delete key pairs.

  • Create and delete floating IPs.

  • Create CloudBees CD/RO resources.

  • Create, attach, detach, extend, and delete volumes.

  • Create new images.

  • Create a snapshot of a server.

  • Perform hard and soft reboots of a server.

  • Deploy, update, and delete HEAT orchestration templates.

The OpenStack plugin provides two primary actions: Deploy and Cleanup, which work as a pair within a job.

Prerequisites

This plugin uses an updated version of Perl, cb-perl shell (Perl v5.32), and requires CloudBees CD/RO agents version 10.3+ to work.

Plugin Version 1.3.7.2022041801 Revised on April 14, 2022

Supported versions

This plugin was developed and tested against OpenStack IceHouse.

The minimum CloudBees CD/RO supported version is ElectricCommander 3.6.

Create OpenStack plugin configurations

Plugin configurations are sets of parameters that can be applied across some, or all, plugin procedures. They can reduce the repetition of common values, create predefined parameter sets, and securely store credentials. Each configuration is given a unique name that is entered in the designated parameter for the plugin procedures that use them. The following steps illustrate how to create a plugin configuration that can be used by one or more plugin procedures.

The Identity Service URL must have http or https, followed by your server hostname or IP address.

To create a plugin configuration:

  1. Navigate to DevOps Essentials  Plugin Management  Plugin configurations.

  2. Select Add plugin configuration to create a new configuration.

  3. In the New Configuration window, specify a Name for the configuration.

  4. Select the Project that the configuration belongs to.

  5. Optionally, add a Description for the configuration.

  6. Select the appropriate Plugin for the configuration.

  7. Configure the plugin configuration parameters.

  8. Select OK.

Create OpenStack plugin procedures

Plugin procedures can be used in procedure steps, process steps, and pipeline tasks, allowing you to orchestrate third-party tools at the appropriate time in your component, application process, or pipeline.

AllocateIP

Creates a new OpenStack floating IP address to use with your OpenStack account.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

AllocateIP input parameters

Table 1. AllocateIP input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Results Location

The location in the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to separate it from the other deployments stored in the same location. The default is $[jobStepId].

AssociateFloatingIP

Associates a floating IP address to an existing instance.

AssociateFloatingIP input parameters

Table 2. AssociateFloatingIP input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Server Id

Required. The ID of the target server with the IP address.

AttachVolume

Attaches volumes that are created with the volume API to server instances. You can attach a volume to one instance.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

AttachVolume input parameters

Table 3. AttachVolume input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Server ID

Required. ID of the server to which the volume is attached.

Volume ID

Required. ID of the volume to attach.

Name of device

Name of the device, such as /dev/vdb, set after the volume is attached to a server. If you do not specify a name, OpenStack automatically assigns the device a name.

Results Location

The location on the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to separate it from other deployments stored in the same location. The default is $[jobStepId].

Cleanup

Deletes an existing OpenStack server instance that was created using the Deploy procedure.

Cleanup input parameters

Table 4. Cleanup input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Server ID(s)

Required. Comma-separated list of IDs of servers to delete.

Resource name(s)

Comma-separated list of names of the resources to delete.

CloudManagerGrow

Allows the plugin to integrate with the CloudManager plugin. It calls the Deploy procedure and is run by CloudManager.

CloudManagerGrow input parameters

Table 5. CloudManagerGrow input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Tenant ID

Required. The ID of the tenant to use.

Number of Servers

Required. The number of servers to deploy. If there are more than one, a suffix (_#) is added to the server names. The default is 1.

Server name

Required. Name of the new server.

Image ID

Required. The ID of an existing image in OpenStack.

Flavor ID

Required. The ID for the flavor to use.

Results tag

Required. The unique tag for this provision to separate it from other deployments stored in the same location. The default is $[jobStepId].

Resource Pool(s)

Required. Space-separated list of names of resource pools in CloudBees CD/RO that are associated with the machines in this configuration, if the resources are created.

Resource workspace

The CloudBees CD/RO workspace that the resource uses.

CloudManagerShrink

Allows the plugin to integrate with the CloudManager plugin. It calls the Cleanup procedure and is run by CloudManager.

CloudManagerShrink input parameters

Table 6. CloudManagerShrink input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

List of Deployments

Required. A list of deployments that were previously created by the CloudManagerGrow procedure to stop.

CloudManagerSync

Allows the plugin to integrate with CloudManager plugin. It verifies that the instances it has recorded as alive are still alive. It is run by CloudManager.

CloudManagerSync input parameters

Table 7. CloudManagerSync input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

List of Deployments

Required. A list of deployments that were previously created by the CloudManagerGrow procedure to verify.

CreateImage

Creates a virtual machine (VM) image. You can launch new instances from these images.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

CreateImage input parameters

Table 8. CreateImage input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Image name

Required. Display name of the new image.

Disk format

Required. The disk format of a VM image. Valid values are AKI, AMI, ARI, Raw, iso, vhd, vdi, qcow2, and vmdk.

Container format

Required. The container format for the new image. Valid values are aki, ari, ami, bare, and ovf.

Is image location a local file ?

Required. If selected, the source image file is on the local machine.

Image path

Required. Path to the image on the local machine or a valid and direct URL to the image location.

Size

Size of the raw image file from which the new image is generated.

Checksum

The checksum of the raw image file.

Min-Ram

The minimum RAM in megabytes (MBs) required to run this image on a server.

Min-Disk

The minimum disk space in gigabytes (GBs) required to run this image on a server.

Owner

The ID of the owner (tenant) of the image.

Results Location

The location on the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to separate it from other deployments stored in the same location. The default is $[jobStepId].

CreateInstanceSnapshot

Creates a snapshot from the instance. You can launch an instance from a snapshot.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

CreateInstanceSnapshot input parameters

Table 9. CreateInstanceSnapshot input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Instance snapshot name

Required. The display name of the snapshot.

Server ID

Required. The ID of the server instance for which a snapshot is created.

Metadata

Metadata for the snapshot in the following format: key1,value1,key2,value2…​

Results Location

The location on the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to separate it from other deployments stored in the same location. The default is $[jobStepId].

CreateKeyPair

Creates a new OpenStack key pair. The public key is stored by OpenStack and the private key is returned to you. If a key with the specified name already exists, OpenStack returns an error.

The plugin stores properties on the CloudBees CD/RO server in the location specified in the Results Location and the Results tag fields. If the Results Location field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

CreateKeyPair input parameters

Table 10. CreateKeyPair input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Key name

Required. A unique name for the key pair. The default is cmdr-$[jobStepId].

Results Location

The location on the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to separate it from other deployments stored in the same location. The default is $[jobStepId].

CreateStack

HEAT is an OpenStack service to orchestrate multiple composite cloud applications using templates. The CreateStack procedure creates a new HEAT stack from a specified HEAT template. You can specify the template (in JSON or YAML format) in the Template parameter field or the URL of the template.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

CreateStack input parameters

Table 11. CreateStack input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Stack Name

Required. The display name for the new stack.

Template

The stack template to instantiate a HEAT stack in JSON or YAML format.

Template URL

A URI to the location containing the updated stack template to instantiate. You specify this parameter only if you are not entering the template in the Template parameter.

Results Location

The location on the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to separate it from other deployments stored in the same location. The default is $[jobStepId].

CreateVolume

Creates a new OpenStack volume. A volume is a detachable block storage device. You can attach a volume to one instance at a time.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

CreateVolume input parameters

Table 12. CreateVolume input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Volume name

Required. The name for the new volume that appears in the UI.

Size (in gigabytes [GBs])

Required. Size of the volume in gigabytes.

Type of volume

Required. The volume type.

Availability zone

The availability zone where the new zone is created.

Results Location

The location on the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to separate it from the other deployments stored in the same location. The default is $[jobStepId].

CreateVolumeSnapshot

Creates a snapshot of a volume, a point-in-time complete copy of the volume. You can create a volume from this snapshot.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

CreateVolumeSnapshot input parameters

Table 13. CreateVolumeSnapshot input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Name of volume snapshot

Required. The display name of the snapshot.

Description

The description of the snapshot.

Create a snapshot forcefully?

If selected, a snapshot of a volume is forcefully created even if it is attached to an instance.

Volume ID

Required. The ID of the volume from which to create a snapshot.

Results Location

The location on the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to separate it from other deployments stored in the same location. The default is $[jobStepId].

DeleteKeyPair

Deletes an existing OpenStack key pair. The public key is removed from OpenStack. You must own the key pair.

DeleteKeyPair input parameters

Table 14. DeleteKeyPair input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Key name

Required. Name of the key pair to delete.

DeleteStack

Deletes an existing stack.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

DeleteStack input parameters

Table 15. DeleteStack input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Stack Name

Required. The display name of the stack to delete.

Stack ID

Required. The ID of the stack to delete.

Results Location

The location on the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to separate it from other deployments stored in the same location. The default is $[jobStepId].

DeleteVolume

Deletes a volume. A volume is a detachable block storage device.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

DeleteVolume input parameters

Table 16. DeleteVolume input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Volume ID

Required. ID of the volume to delete.

Deploy

Calls the CreateKeyPair procedure and deploys one or more new instances.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

Deploy input parameters

Table 17. Deploy input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Key Pair Name

Required. Name of an existing key pair.

Number of Servers

Required. Number of servers to deploy. If there are more than one, a suffix (_#) is added to the server names. The default is 1.

Server name

Required. Name of the new server.

Image ID

Required. ID of an existing image in OpenStack.

Flavor ID

Required. ID of the flavor to use.

Security Group(s)

Newline-delimited list of security groups.

Availability Zone

The availability zone in which to launch the server.

Customization Script

Configuration information or scripts to execute when the server is launched.

Results Location

The location on the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to keep it separate from the other deployments stored in the same location. The default is $[jobStepId].

Create Resource?

If selected, resources are created for deployed servers.

Associate IP?

If selected,the IP address is associated with the deployed instance.

Resource Pool

Name of the resource pool in CloudBees CD/RO that is associated with the machines in this configuration when resources are created.

Resource Port

Port is used when creating a resource.

Resource workspace

CloudBees CD/RO workspace that the resources uses.

Resource Zone Name

CloudBees CD/RO zone name for a resource. Used when creating a resource.

DetachVolume

This procedure detaches a volume from a server. A volume is a detachable block storage device.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

DetachVolume input parameters

Table 18. DetachVolume input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Server ID

Required. ID of the server from which the volume is detached.

Volume ID

Required. ID of the volume to detach.

Attachment ID

Required. ID of the volume attachment.

ExtendVolume

Extends the size of the specified volume. The volume must be in available state before the size is extended.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.
You must verify that the ExtendVolume procedure is supported by the OpenStack services before using this procedure.

ExtendVolume input parameters

Table 19. ExtendVolume input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Volume ID

Required. ID of the volume to extend.

New size

Required. New size of the volume.

Results Location

The location on the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to separate it from other deployments stored in the same location. The default is $[jobStepId].

RebootInstance

Reboots a server instance.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

RebootInstance input parameters

Table 20. RebootInstance input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Server ID

Required. ID of the server to reboot.

Reboot Type

Required. Type of the reboot action (Hard or Soft).

ReleaseIP

Deletes an existing OpenStack floating IP address that is allocated to your account.

ReleaseIP input parameters

Table 21. ReleaseIP input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Floating Address ID

Required. ID of the floating IP address to delete.

Teardown

Deletes an existing OpenStack server.

Teardown input parameters

Table 22. Teardown input parameters
Parameter Description

Configuration

The name of a valid existing configuration with the connection information.

Resource name(s)

Required. Comma-separated list of resource names to delete.

UpdateStack

Updates an existing stack. You can enter the updated template (in JSON or YAML format) in the Template field or the URL of the template.

The plugin stores properties on the CloudBees CD/RO server in the locations specified in the Results Location and Results tag parameter fields. If the Results Location parameter field is empty, the default location in the job directory is /myJob/Openstack/deployed/<provision-tag>.

UpdateStack input parameters

Table 23. UpdateStack input parameters
Parameter Description

Configuration

Required. The name of a valid existing configuration with the connection information.

Stack Name

Required. The display name of the stack to update.

Stack ID

Required. The ID of the stack to update.

Template

The template (in JSON or YAML format) with which to update the stack.

Template URL

A URI to the location containing the updated stack template to instantiate. You specify this parameter only if you are not entering the template in the Template field.

Results Location

The location on the CloudBees CD/RO server where the properties are stored. The default is /myJob/OpenStack/deployed.

Results tag

Required. The unique tag for this provision to separate it from other deployments stored in the same location. The default is $[jobStepId].

OpenStack plugin use cases

The most common use for the OpenStack plugin is to create a server, create CloudBees CD/RO resources assigned to it, use the resources to run some operations, and then delete the resource and the server.

To accomplish these tasks you must:

  1. Create a plugin configuration.

  2. Use the Deploy procedure to deploy an OpenStack server.

  3. Create and use resources for this deployment. For example, create a new Command procedure step to use a resource that you created by adding a resource from a resource pool using the ec-perl sleep command for 30 seconds.

  4. Delete the resources.

  5. Use the Cleanup procedure to delete the deployed OpenStack server instance that you created with the Deploy procedure.

  6. After the job runs, view the results in CloudBees CD/RO.

    Deploy output
    Figure 1. Deploy output
    Cleanup output
    Figure 2. Cleanup output

OpenStack plugin notes

1.3.7

  • Added session validation.

1.3.6

  • The documentation has been migrated to the main documentation site.

1.3.5

  • The plugin icon has been updated.

1.3.4

  • Added Rackspace support for dynamic environments.

  • Configured the plugin to allow the CloudBees CD/RO UI to create configurations inline of a procedure form.

  • Configured the plugin to allow the CloudBees CD/RO UI to render the plugin procedure parameters entirely using the configured form XMLs.

  • Enabled the plugin for managing the plugin configurations inline when defining an application process step or a pipeline stage task.

1.3.3

  • Added support for the Region parameter to the CreateVolume procedure.

1.3.2

  • Added a Resource Port field to the dynamic environments.

  • Added support for the Resource Port parameter to the Deploy procedure

1.3.1

  • Fixed an issue with configurations being cached for Internet Explorer®.

  • Added validation to the CreateConfiguration procedure for dynamic environments.

  • Added the Tenant ID parameter to the OpenStack plugin configuration.

  • Removed the Tenant ID parameter from all procedures except CreateConfiguration.

  • Added the ability to dynamically retrieve drop-down options such as image or flavor when creating resource templates for dynamic environments.

  • Added the ability to create a resource in a non-default zone.

1.2.1

  • Fixed an issue that occurs when a resource was not created after provisioning it and the "Duplicate resource name" error message appears.

  • The Workspace parameter was removed from procedure to create an OpenStack configuration.

1.2.0

  • Added support for the following procedures:

    • CreateVolume to create a new volume.

    • ExtendVolume to extend the size of a volume.

    • AttachVolume to attach the volume to a server instance.

    • DetachVolume to detach the volume from a server instance.

    • DeleteVolume to delete a volume from OpenStack block storage.

    • CreateImage to create a virtual machine (VM) image on OpenStack Image Service Glance.

    • CreateInstanceSnapshot to create a snapshot of a server instance.

    • CreateVolumeSnapshot to create a snapshot of a volume.

    • CreateStack to create a HEAT stack from a HEAT template.

    • UpdateStack to update an existing HEAT stack with a template.

    • DeleteStack to delete an existing HEAT stack.

  • The Deploy procedure was updated to add support for customization scripts, availability zones, security groups, and deployments using an instance snapshot.

1.1.2

  • Added properties in the ec_cloudprovisioning_plugin property sheet for CloudBees CD/RO deploy.

1.1.1

  • Added support for Keystone v3 authorization.

  • Decoupled key pairs in creation and deletion operations from the Deploy and Cleanup procedures.

  • Added the AssociateFloatingIP procedure to associate floating IP addresses to existing VMs.

  • Fixed the Create Resource? parameter in the Deploy procedure.

1.0.0

  • Added support configuration management procedures.

  • Added support for the AllocateIP, Cleanup, CreateKeyPair, DeleteKeyPair, Deploy, and ReleaseIP procedures.

  • Implemented CloudManager support.

  • Implemented the XML parameter panel.

  • Added a documentation link to each procedure.

  • Added the documentation page.

  • Added use cases.