OpenStack CPI Usage¶
This topic describes cloud properties for different resources created by the OpenStack CPI.
AZs¶
Schema for cloud_properties section:
- availability_zone [String, required]: Availability zone to use for creating instances. Example:
east.
Example:
azs:
- name: z1
cloud_properties:
availability_zone: east
Networks¶
Schema for cloud_properties section used by dynamic network or manual network subnet:
- net_id [String, required]: Network ID containing the subnet in which the instance will be created. Example:
net-b98ab66e-6fae-4c6a-81af-566e630d21d1. - security_groups [Array, optional]: Array of security group names or UUIDs to apply for all VMs that are placed on this network. Defaults to security groups specified by
default_security_groupsin the global CPI settings unless security groups are specified on a resource pool/vm type for a VM. If security groups are specified on a resource pool and a network, the resource pool security groups takes precedence since CPI v34+. In older CPI versions prior v34, security groups can either be specified for a network or a resource pool. Security group UUIDs can be used since CPI v39+.
Example of manual network:
networks:
- name: default
type: manual
subnets:
- range: 10.10.0.0/24
gateway: 10.10.0.1
cloud_properties:
net_id: net-b98ab66e-6fae-4c6a-81af-566e630d21d1
security_groups: [my-sec-group]
Example of dynamic network:
networks:
- name: default
type: dynamic
cloud_properties:
net_id: net-b98ab66e-6fae-4c6a-81af-566e630d21d1
Example of vip network:
networks:
- name: default
type: vip
VM Types / VM Extensions¶
Schema for cloud_properties section:
- instance_type [String, required]: Type of the instance. Example:
m1.small. - availability_zone [String, required]: Availability zone to use for creating instances. Example:
east. - security_groups [Array, optional]: Array of security group names or UUIDs to apply for all VMs that are placed on this network. Defaults to security groups specified by
default_security_groupsin the global CPI settings unless security groups are specified on one of the VM networks. If security groups are specified on a resource pool and a network, the resource pool security groups takes precedence since CPI v34+. In older CPI versions prior v34, security groups can either be specified for a network or a resource pool. Security group UUIDs can be used since CPI v39+. - key_name [String, optional]: Key pair name. Defaults to key pair name specified by
default_key_namein the global CPI settings. Example:bosh. - root_disk [Hash, optional]: Custom root disk properties. Requires
boot_from_volume: trueeither globally or locally in this VM Type to enable cinder-backed boot volumes. Available in v25+.- size [Integer, required]: Specifies the disk size in gigabytes.
- loadbalancer_pools [Array, optional]: Array of Hashes defining LBaaSv2 pools to attach this instance to. Requires neutron LBaaSv2 extension and OpenStack Mitaka or newer. Available in v32+.
- name [String, required]: The name of the LBaaSv2 loadbalancer pool
- port [Integer, required]: The port exposed on the instance
- monitoring_port [Integer, optional]: The port used for health monitoring. If specified, this port will be used for health checks instead of the main port. Useful when the health check endpoint differs from the service port. Available when using Octavia loadbalancers.
- boot_from_volume [Boolean, optional]: Override global
boot_from_volumeto enable cinder-backed boot volumes for this VM Type. Available in v34+. - allowed_address_pairs [String, optional]: A single VRRP IP address that associated VMs will be allowed to use in addition to their primary IP address. See Using VRRP for more details. Available in v37+.
Example of an m1.small instance:
resource_pools:
- name: default
network: default
stemcell:
name: bosh-openstack-kvm-ubuntu-noble
version: latest
cloud_properties:
instance_type: m1.small
availability_zone: east
Example of an m1.small instance, attached to LBaaSv2 pool named 'my-lb-pool'. Instance exposes port 8080 and is locked down by specific security groups:
resource_pools:
- name: web-workers
network: default
stemcell:
name: bosh-openstack-kvm-ubuntu-noble
version: latest
cloud_properties:
instance_type: m1.small
availability_zone: east
security_groups: [bosh-vms, lb-accessible]
loadbalancer_pools:
- name: my-lb-pool
port: 8080
Example with monitoring_port for health checks on a different port:
resource_pools:
- name: haproxy
network: default
stemcell:
name: bosh-openstack-kvm-ubuntu-noble
version: latest
cloud_properties:
instance_type: m1.small
availability_zone: east
loadbalancer_pools:
- name: http-pool
port: 80
monitoring_port: 8080
- name: https-pool
port: 443
monitoring_port: 8080
Example of an m1.small instance with custom root disk size of 50GB:
resource_pools:
- name: default
network: default
stemcell:
name: bosh-openstack-kvm-ubuntu-noble
version: latest
cloud_properties:
instance_type: m1.small
availability_zone: east
root_disk:
size: 50
Disk Types¶
Schema for cloud_properties section:
- type [String, optional]: Volume type as configured in your OpenStack installation. Example:
SSD
Cinder volumes are created in the availability zone of an instance that volume will be attached.
Example of 10GB disk:
- name: default
disk_size: 10_240
cloud_properties:
type: SSD
Global Configuration¶
See CPI job configuration for details.
Schema:
- default_volume_type [String, optional]: sets volume type for persistent disks unless overridden in resource pool/VM Type.
cinder type-listwill return the available volume types. Example:SSD.
Example with Keystone V3 and a single domain:
auth_url: http://pistoncloud.com:5000/v3
username: christopher
api_key: QRoqsenPsNGX6
project: Bosh
domain: sample-domain
region: RegionOne
default_key_name: bosh
default_security_groups: [bosh]
Example with Keystone V3 and different domains for the user and project:
auth_url: http://pistoncloud.com:5000/v3
username: christopher
api_key: QRoqsenPsNGX6
project: Bosh
user_domain_name: user-domain
project_domain_name: project-domain
region: RegionOne
default_key_name: bosh
default_security_groups: [bosh]
Example with Keystone V2 and default volume type ceph:
auth_url: http://pistoncloud.com:5000/v2.0
username: christopher
api_key: QRoqsenPsNGX6
tenant: Bosh
region: RegionOne
default_key_name: bosh
default_security_groups: [bosh]
default_volume_type: ceph
Example Cloud Config¶
azs:
- name: z1
cloud_properties:
availability_zone: east1
- name: z2
cloud_properties:
availability_zone: east2
vm_types:
- name: default
cloud_properties:
instance_type: small
- name: large
cloud_properties:
instance_type: large
disk_types:
- name: default
disk_size: 3000
- name: large
disk_size: 50_000
networks:
- name: default
type: manual
subnets:
- range: 10.10.0.0/24
gateway: 10.10.0.1
az: z1
dns: [8.8.8.8]
cloud_properties:
net_id: net-b98ab66e-6fae-4c6a-81af-566e630d21d1
- range: 10.10.1.0/24
gateway: 10.10.1.1
az: z2
dns: [8.8.8.8]
cloud_properties:
net_id: net-85940t48-8ffe-3c3a-81af-27d499ff9842
- name: vip
type: vip
compilation:
workers: 5
reuse_compilation_vms: true
az: z1
vm_type: large
network: default