This is an experimental provisioning backend that eventually intends to support several libcloud drivers. At this time only the OpenStack driver is supported.
An account with an OpenStack provider that supports Nova and Cinder
Configuration in teuthology.yaml for this backend itself (see Configuration) and nsupdate-web
You will also need to choose a maximum number of nodes to be running at once, and create records in your paddles database for each one - making sure to set is_vm to True for each.
An example configuration using OVH as an OpenStack provider:
libcloud: providers: ovh: # This string is the 'machine type' value you will use when locking these nodes driver: openstack driver_args: # driver args are passed directly to the libcloud driver username: 'my_ovh_username' password: 'my_ovh_password' ex_force_auth_url: 'https://auth.cloud.ovh.net/v2.0/tokens' ex_force_auth_version: '2.0_password' ex_tenant_name: 'my_tenant_name' ex_force_service_region: 'my_region'
While we could have supported directly calling nsupdate, we chose not to. There are a few reasons for this:
To avoid piling on yet another feature of teuthology that could be left up to a separate service
To avoid teuthology users having to request, obtain and safeguard the private key that nsupdate requires to function
Because we use one subdomain for all of Sepia’s test nodes, we had to enable dynamic DNS for that whole zone (this is a limitation of bind). However, we do not want users to be able to push DNS updates for the entire zone. Instead, we gave nsupdate-web the ability to accept or reject requests based on whether the hostname matches a configurable regular expression. The private key itself is not shared with non-admin users.
At this time, only OVH has been tested as a provider. PRs are welcome to support more!