41 lines
1.1 KiB
Python
Executable File
41 lines
1.1 KiB
Python
Executable File
#!/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("apiKey")
|
|
|
|
args = parser.parse_args()
|
|
|
|
serverName = args.serverName
|
|
serverType = args.serverType
|
|
serverImage = args.serverImage
|
|
apiKey = args.apiKey
|
|
ciFile = args.ciFile
|
|
|
|
try:
|
|
if ciFile:
|
|
with open(ciFile, 'r') as file:
|
|
cloud_init = file.read()
|
|
else:
|
|
cloud_init=''
|
|
|
|
client = Client(token=apiKey)
|
|
response = client.servers.create(name=serverName, server_type=ServerType(
|
|
name=serverType), image=Image(name=serverImage), user_data=cloud_init)
|
|
server = response.server
|
|
print(server)
|
|
print("Root Password: " + response.root_password)
|
|
print("IP: " + response.server.public_net.ipv4.ip)
|
|
|
|
except APIException as e:
|
|
print("API Error ", e)
|