Add support for specifying key-name per label

In order to support putting less things into images via puppet in Infra,
we'd like to be able to pre-populate our clouds with keypairs for the
infra-root accounts and have nova add those at boot time.

Change-Id: I72cfffacdeb56e3e9743e47a107fb309a7517935
This commit is contained in:
Monty Taylor 2017-04-10 17:26:25 -05:00
parent e9a40ebb41
commit 2d8e29a1bf
No known key found for this signature in database
GPG Key ID: 7BAE94BC7141A594
4 changed files with 8 additions and 0 deletions

View File

@ -547,6 +547,9 @@ Example configuration::
Nodepool expects that user to exist after running the script indicated by
``setup``. Default ``jenkins``
``key-name``
If provided, named keypair in nova that will be provided to server create.
``private-key``
Default ``/var/lib/jenkins/.ssh/id_rsa``

View File

@ -34,6 +34,7 @@ class ConfigValidator:
'pause': bool,
'min-ram': int,
'name-filter': str,
'key-name': str,
'diskimage': str,
'meta': dict,
'username': str,

View File

@ -62,6 +62,7 @@ class Provider(ConfigValue):
for k in new_images:
if (new_images[k].min_ram != old_images[k].min_ram or
new_images[k].name_filter != old_images[k].name_filter or
new_images[k].key_name != old_images[k].key_name or
new_images[k].username != old_images[k].username or
new_images[k].user_home != old_images[k].user_home or
new_images[k].private_key != old_images[k].private_key or
@ -236,6 +237,7 @@ def loadConfig(config_path):
p.images[i.name] = i
i.min_ram = image['min-ram']
i.name_filter = image.get('name-filter', None)
i.key_name = image.get('key-name', None)
i.username = image.get('username', 'jenkins')
i.user_home = image.get('user-home', '/home/jenkins')
i.pause = bool(image.get('pause', False))

View File

@ -479,6 +479,7 @@ class NodeLauncher(threading.Thread):
server = self.manager.createServer(
hostname, self.image.min_ram, cloud_image.external_id,
name_filter=self.image.name_filter, az=self.node.az,
key_name=self.image.key_name,
config_drive=self.image.config_drive,
nodepool_node_id=self.node_id,
nodepool_image_name=self.image.name)
@ -803,6 +804,7 @@ class SubNodeLauncher(threading.Thread):
server = self.manager.createServer(
hostname, self.image.min_ram, cloud_image.external_id,
name_filter=self.image.name_filter, az=self.node_az,
key_name=self.image.key_name,
config_drive=self.image.config_drive,
nodepool_node_id=self.node_id,
nodepool_image_name=self.image.name)