From f4a2174f29426b4a1650a22495f1d151e5bd968d Mon Sep 17 00:00:00 2001 From: Jordan Rodgers Date: Mon, 7 May 2018 13:31:48 -0400 Subject: [PATCH] only use proxmox ssh backend for cloud-init --- config.py | 2 ++ proxstar/proxmox.py | 17 +++++++++++++++++ proxstar/vm.py | 8 ++++---- proxstar/vnc.py | 2 +- 4 files changed, 24 insertions(+), 5 deletions(-) diff --git a/config.py b/config.py index a8e650d..7bead6d 100644 --- a/config.py +++ b/config.py @@ -30,7 +30,9 @@ PROXMOX_HOSTS = [ for host in environ.get('PROXSTAR_PROXMOX_HOSTS', '').split(',') ] PROXMOX_USER = environ.get('PROXSTAR_PROXMOX_USER', '') +PROXMOX_PASS = environ.get('PROXSTAR_PROXMOX_PASS', '') PROXMOX_ISO_STORAGE = environ.get('PROXSTAR_PROXMOX_ISO_STORAGE', 'nfs-iso') +PROXMOX_SSH_USER = environ.get('PROXSTAR_PROXMOX_SSH_USER', '') PROXMOX_SSH_KEY = environ.get('PROXSTAR_PROXMOX_SSH_KEY', '') PROXMOX_SSH_KEY_PASS = environ.get('PROXSTAR_PROXMOX_SSH_KEY_PASS', '') diff --git a/proxstar/proxmox.py b/proxstar/proxmox.py index f4fc48d..b7d9ede 100644 --- a/proxstar/proxmox.py +++ b/proxstar/proxmox.py @@ -10,6 +10,23 @@ def connect_proxmox(): proxmox = ProxmoxAPI( host, user=app.config['PROXMOX_USER'], + password=app.config['PROXMOX_PASS'], + verify_ssl=False) + version = proxmox.version.get() + return proxmox + except: + if app.config['PROXMOX_HOSTS'].index(host) == ( + len(app.config['PROXMOX_HOSTS']) - 1): + print('Unable to connect to any of the given Proxmox servers!') + raise + + +def connect_proxmox_ssh(): + for host in app.config['PROXMOX_HOSTS']: + try: + proxmox = ProxmoxAPI( + host, + user=app.config['PROXMOX_SSH_USER'], private_key_file='proxmox_ssh_key', password=app.config['PROXMOX_SSH_KEY_PASS'], backend='ssh_paramiko') diff --git a/proxstar/vm.py b/proxstar/vm.py index fbeb0d2..87170b9 100644 --- a/proxstar/vm.py +++ b/proxstar/vm.py @@ -5,7 +5,7 @@ from proxstar import db, starrs from proxstar.db import get_vm_expire from proxstar.util import lazy_property from proxstar.starrs import get_ip_for_mac -from proxstar.proxmox import connect_proxmox, get_node_least_mem, get_free_vmid, get_vm_node +from proxstar.proxmox import connect_proxmox, connect_proxmox_ssh, get_node_least_mem, get_free_vmid, get_vm_node from flask import current_app as app @@ -204,16 +204,16 @@ class VM(object): return get_vm_expire(db, self.id, app.config['VM_EXPIRE_MONTHS']) def set_ci_user(self, user): - proxmox = connect_proxmox() + proxmox = connect_proxmox_ssh() proxmox.nodes(self.node).qemu(self.id).config.put(ciuser=user) def set_ci_ssh_key(self, ssh_key): - proxmox = connect_proxmox() + proxmox = connect_proxmox_ssh() escaped_key = urllib.parse.quote(ssh_key, safe='') proxmox.nodes(self.node).qemu(self.id).config.put(sshkey=escaped_key) def set_ci_network(self): - proxmox = connect_proxmox() + proxmox = connect_proxmox_ssh() proxmox.nodes(self.node).qemu(self.id).config.put(ipconfig0='ip=dhcp') diff --git a/proxstar/vnc.py b/proxstar/vnc.py index 5087b31..b16358f 100644 --- a/proxstar/vnc.py +++ b/proxstar/vnc.py @@ -78,7 +78,7 @@ def start_ssh_tunnel(node, port): port = int(port) server = SSHTunnelForwarder( node, - ssh_username='root', + ssh_username=app.config['PROXMOX_SSH_USER'], ssh_pkey='proxmox_ssh_key', ssh_private_key_password=app.config['PROXMOX_SSH_KEY_PASS'], remote_bind_address=('127.0.0.1', port),