.. _openstack-driver: .. default-domain:: zuul OpenStack Driver ---------------- Selecting the OpenStack driver adds the following options to the :attr:`providers` section of the configuration. .. attr-overview:: :prefix: providers.[openstack] :maxdepth: 3 .. attr:: providers.[openstack] Specifying the ``openstack`` driver for a provider adds the following keys to the :attr:`providers` configuration. .. note:: For documentation purposes the option names are prefixed ``providers.[openstack]`` to disambiguate from other drivers, but ``[openstack]`` is not required in the configuration (e.g. below ``providers.[openstack].cloud`` refers to the ``cloud`` key in the ``providers`` section when the ``openstack`` driver is selected). An OpenStack provider's resources are partitioned into groups called "pools" (see :attr:`providers.[openstack].pools` for details), and within a pool, the node types which are to be made available are listed (see :attr:`providers.[openstack].pools.labels` for details). Within each OpenStack provider the available Nodepool image types are defined (see :attr:`providers.[openstack].diskimages`). .. code-block:: yaml providers: - name: provider1 driver: openstack cloud: example region-name: 'region1' rate: 1.0 boot-timeout: 120 launch-timeout: 900 launch-retries: 3 image-name-format: '{image_name}-{timestamp}' hostname-format: '{label.name}-{provider.name}-{node.id}' post-upload-hook: /usr/bin/custom-hook diskimages: - name: trusty meta: key: value key2: value - name: precise - name: devstack-trusty pools: - name: main max-servers: 96 availability-zones: - az1 networks: - some-network-name security-groups: - zuul-security-group labels: - name: trusty min-ram: 8192 diskimage: trusty console-log: True - name: precise min-ram: 8192 diskimage: precise - name: devstack-trusty min-ram: 8192 diskimage: devstack-trusty - name: provider2 driver: openstack cloud: example2 region-name: 'region1' rate: 1.0 image-name-format: '{image_name}-{timestamp}' hostname-format: '{label.name}-{provider.name}-{node.id}' diskimages: - name: precise meta: key: value key2: value pools: - name: main max-servers: 96 labels: - name: trusty min-ram: 8192 diskimage: trusty - name: precise min-ram: 8192 diskimage: precise - name: devstack-trusty min-ram: 8192 diskimage: devstack-trusty .. attr:: cloud :type: string :required: Name of a cloud configured in ``clouds.yaml``. The instances spawned by nodepool will inherit the default security group of the project specified in the cloud definition in `clouds.yaml` (if other values not specified). This means that when working with Zuul, for example, SSH traffic (TCP/22) must be allowed in the project's default security group for Zuul to be able to reach instances. More information about the contents of `clouds.yaml` can be found in `the openstacksdk documentation `_. .. attr:: boot-timeout :type: int seconds :default: 60 Once an instance is active, how long to try connecting to the image via SSH. If the timeout is exceeded, the node launch is aborted and the instance deleted. .. attr:: launch-timeout :type: int seconds :default: 3600 The time to wait from issuing the command to create a new instance until that instance is reported as "active". If the timeout is exceeded, the node launch is aborted and the instance deleted. .. attr:: nodepool-id :type: string :default: None *Deprecated* A unique string to identify which nodepool instances is using a provider. This is useful if you want to configure production and development instances of nodepool but share the same provider. .. attr:: launch-retries :type: int :default: 3 The number of times to retry launching a server before considering the job failed. .. attr:: region-name :type: string The region name if the provider cloud has multiple regions. .. attr:: hostname-format :type: string :default: {label.name}-{provider.name}-{node.id} Hostname template to use for the spawned instance. .. attr:: image-name-format :type: string :default: {image_name}-{timestamp} Format for image names that are uploaded to providers. .. attr:: post-upload-hook :type: string :default: None Filename of an optional script that can be called after an image has been uploaded to a provider but before it is taken into use. This is useful to perform last minute validation tests before an image is really used for build nodes. The script will be called as follows: ``