only use proxmox ssh backend for cloud-init

This commit is contained in:
Jordan Rodgers 2018-05-07 13:31:48 -04:00
parent 04d588d688
commit f4a2174f29
4 changed files with 24 additions and 5 deletions

View file

@ -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', '')

View file

@ -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')

View file

@ -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')

View file

@ -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),