1
0

Compare commits

...

7 Commits

Author SHA1 Message Date
Philipp Klüter 2b4c99d1fc Minor fixes 2020-05-22 17:04:37 +02:00
Philipp Klüter 1e51967f95 Added script to list sshkeys 2020-05-22 17:04:25 +02:00
Philipp Klüter d07d4be932 Added ssh_key option 2020-05-22 17:04:07 +02:00
Philipp Klüter e3563fce97 Added gitignore 2020-05-22 16:45:02 +02:00
Philipp Klüter 6e194e0c52 Cloud-init, Exception Handling 2020-05-22 16:42:02 +02:00
Philipp Klüter c8248ef7bf Added Argparse 2020-05-17 23:25:02 +02:00
Philipp Klüter e02e6272d2 initial dev commit 2020-05-17 22:44:14 +02:00
7 changed files with 208 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
cronscripts
Executable
+52
View File
@@ -0,0 +1,52 @@
#!/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)
Executable
+30
View File
@@ -0,0 +1,30 @@
#!/usr/bin/env python3
from hcloud import Client, APIException
import argparse
# Get Servername
parser = argparse.ArgumentParser()
parser.add_argument("serverName")
parser.add_argument("apiKey")
args = parser.parse_args()
serverName = args.serverName
apiKey = args.apiKey
try:
client = Client(token=apiKey)
server = client.servers.get_by_name(name=serverName)
print("Deleting: ", server.name)
response = client.servers.delete(server)
print("Remaining servers: ")
servers = client.servers.get_all()
for server in servers:
print(server.name)
except APIException as e:
print("API Error ", e)
Executable
+23
View File
@@ -0,0 +1,23 @@
#!/usr/bin/env python3
from hcloud import Client, APIException
import argparse
# Get Servername
parser = argparse.ArgumentParser()
parser.add_argument("serverName")
parser.add_argument("apiKey")
args = parser.parse_args()
serverName = args.serverName
apiKey = args.apiKey
try:
client = Client(token=apiKey)
server = client.servers.get_by_name(serverName)
print("Name: ", server.name)
print("Status: ", server.status)
print("Type: ", server.server_type.name)
except APIException as e:
print("API Error ", e)
Executable
+20
View File
@@ -0,0 +1,20 @@
#!/usr/bin/env python3
from hcloud import Client, APIException
import argparse
# Get Servername
parser = argparse.ArgumentParser()
parser.add_argument("apiKey")
args = parser.parse_args()
apiKey = args.apiKey
try:
client = Client(token=apiKey)
servers = client.servers.get_all()
for server in servers:
print("Servername: %s\t\tStatus: %s" %(server.name ,server.status))
except APIException as e:
print("API Error ", e)
+61
View File
@@ -0,0 +1,61 @@
#!/usr/bin/env python3
from hcloud import Client, APIException
from hcloud.server_types.domain import ServerType
import time
import argparse
import sys
# Get Servername
parser = argparse.ArgumentParser()
parser.add_argument("serverName")
parser.add_argument("serverType")
parser.add_argument("apiKey")
args = parser.parse_args()
serverName = args.serverName
serverType = args.serverType
apiKey = args.apiKey
try:
client = Client(token=apiKey)
server = client.servers.get_by_name(name=serverName)
if server.server_type.name == serverType:
sys.exit('Server type is already: %s' % serverType)
if server.status != "off":
print("Stopping: ", server.name)
response = client.servers.power_off(server)
while server.status != "off":
print("Server not yet powerd off, waiting 2 seconds")
time.sleep(2)
server = client.servers.get_by_name(name=serverName)
print("Change Server Type: ", server.name, " to: ", serverType)
response = client.servers.change_type(
server, server_type=ServerType(name=serverType), upgrade_disk="false")
print("Change server type initiated. Waiting 10 seconds.")
time.sleep(10)
server = client.servers.get_by_name(name=serverName)
while server.status == "migrating":
print("Server is migrating, waiting 10 seconds.")
time.sleep(10)
server = client.servers.get_by_name(name=serverName)
while server.status == "starting":
print("Server is starting, waiting 5 seconds.")
time.sleep(5)
server = client.servers.get_by_name(name=serverName)
if server.status == "running":
print("Server finished migration successfully")
else:
print("Server finished migration with unexpected status.")
print("Server status: ", server.status)
except APIException as e:
print("API Error ", e)
Executable
+21
View File
@@ -0,0 +1,21 @@
#!/usr/bin/env python3
from hcloud import Client, APIException
import argparse
# Get Servername
parser = argparse.ArgumentParser()
parser.add_argument("apiKey")
args = parser.parse_args()
apiKey = args.apiKey
try:
client = Client(token=apiKey)
ssh_keys = client.ssh_keys.get_all()
for ssh_key in ssh_keys:
print("Key Name:", ssh_key.name)
except APIException as e:
print("API Error ", e)