#!/usr/bin/env python3 from hcloud import Client, APIException from hcloud.server_types.domain import ServerType from hcloud.images.domain import Image import argparse # Get Servername parser = argparse.ArgumentParser() parser.add_argument("serverName") parser.add_argument("serverType") parser.add_argument("serverImage") parser.add_argument('-ci', '--cloudInit', dest='ciFile', metavar='cloud-init filepath') parser.add_argument('-s', '--sshKeys', dest='sshKeys', metavar='ssh keys (comma separated)') parser.add_argument("apiKey") args = parser.parse_args() serverName = args.serverName serverType = args.serverType serverImage = args.serverImage apiKey = args.apiKey ciFile = args.ciFile sshKeys = args.sshKeys ssh_keys = []; try: client = Client(token=apiKey) if ciFile: with open(ciFile, 'r') as file: cloud_init = file.read() else: cloud_init='' if sshKeys: for sshKey in sshKeys.split(','): ssh_keys.append(client.ssh_keys.get_by_name(sshKey)) else: ssh_keys='' response = client.servers.create(name=serverName, server_type=ServerType( name=serverType), image=Image(name=serverImage), user_data=cloud_init, ssh_keys=ssh_keys) server = response.server if response.root_password: print("Root Password: " + response.root_password) print("IP: " + response.server.public_net.ipv4.ip) except APIException as e: print("API Error ", e)