diff --git a/lib/ansible/modules/cloud/misc/proxmox.py b/lib/ansible/modules/cloud/misc/proxmox.py index 6c727cd2e3d..5b507b495d7 100644 --- a/lib/ansible/modules/cloud/misc/proxmox.py +++ b/lib/ansible/modules/cloud/misc/proxmox.py @@ -175,6 +175,13 @@ options: - Indicate desired state of the instance choices: ['present', 'started', 'absent', 'stopped', 'restarted'] default: present + pubkey: + description: + - Public key to add to /root/.ssh/authorized_keys. This was added on Proxmox 4.2, it is ignored for earlier versions + version_added: "2.3" + default: null + required: false + notes: - Requires proxmoxer and requests modules on host. This modules can be installed with pip. requirements: [ "proxmoxer", "python >= 2.7", "requests" ] @@ -329,6 +336,7 @@ def node_check(proxmox, node): def create_instance(module, proxmox, vmid, node, disk, storage, cpus, memory, swap, timeout, **kwargs): proxmox_node = proxmox.nodes(node) kwargs = dict((k,v) for k, v in kwargs.items() if v is not None) + if VZ_TYPE =='lxc': kwargs['cpulimit']=cpus kwargs['rootfs']=disk @@ -338,9 +346,14 @@ def create_instance(module, proxmox, vmid, node, disk, storage, cpus, memory, sw if 'mounts' in kwargs: kwargs.update(kwargs['mounts']) del kwargs['mounts'] + if 'pubkey' in kwargs: + if float(proxmox.version.get()['version']) >= 4.2: + kwargs['ssh-public-keys'] = kwargs['pubkey'] + del kwargs['pubkey'] else: kwargs['cpus']=cpus kwargs['disk']=disk + taskid = getattr(proxmox_node, VZ_TYPE).create(vmid=vmid, storage=storage, memory=memory, swap=swap, **kwargs) while timeout: @@ -428,6 +441,7 @@ def main(): timeout = dict(type='int', default=30), force = dict(type='bool', default='no'), state = dict(default='present', choices=['present', 'absent', 'stopped', 'started', 'restarted']), + pubkey = dict(type='str', default=None) ) ) @@ -502,7 +516,9 @@ def main(): cpuunits = module.params['cpuunits'], nameserver = module.params['nameserver'], searchdomain = module.params['searchdomain'], - force = int(module.params['force'])) + force = int(module.params['force']), + pubkey = module.params['pubkey'] + ) module.exit_json(changed=True, msg="deployed VM %s from template %s" % (vmid, module.params['ostemplate'])) except Exception as e: