Lacking variables and bash scripts fixes
This commit is contained in:
parent
226c42b9eb
commit
31d5a09460
@ -1,9 +1,14 @@
|
||||
#!/bin/bash
|
||||
chmod +x deploy_webservice.py
|
||||
echo "### Creating venv is probably a good idea - let's make one..."
|
||||
python3 -m venv web_venv
|
||||
if [ -d "web_venv" ]; then
|
||||
echo " web_venv already exists, skipping creation..."
|
||||
else
|
||||
python3 -m venv web_venv
|
||||
echo " CREATED"
|
||||
fi
|
||||
source ./web_venv/bin/activate
|
||||
echo "### Now install hcloud module..."
|
||||
pip install -q hcloud
|
||||
echo "### And clear last deployment results..."
|
||||
python deploy_webservice.py --clean
|
||||
python deploy_webservice.py --clean
|
@ -1,11 +1,16 @@
|
||||
#!/bin/bash
|
||||
chmod +x deploy_webservice.py
|
||||
python3 -m venv web_venv
|
||||
echo "### Creating venv is probably a good idea - let's make one..."
|
||||
if [ -d "web_venv" ]; then
|
||||
echo " web_venv already exists, skipping creation..."
|
||||
else
|
||||
python3 -m venv web_venv
|
||||
echo " CREATED"
|
||||
fi
|
||||
source ./web_venv/bin/activate
|
||||
pip install -q hcloud
|
||||
echo "############################"
|
||||
echo "Let's clean everything from last run..."
|
||||
python deploy_webservice.py --clean
|
||||
echo "--------------------------------------------------------------------------"
|
||||
echo " Success! I guess..."
|
||||
echo "############################"
|
||||
|
@ -9,12 +9,14 @@ from hcloud.load_balancers.domain import (
|
||||
LoadBalancerHealthCheck,
|
||||
LoadBalancerService,
|
||||
LoadBalancerHealtCheckHttp,
|
||||
LoadBalancerTarget,
|
||||
)
|
||||
import sys
|
||||
|
||||
|
||||
CLIENT_ID = "s478841"
|
||||
SERVERS_NO = 2
|
||||
SERVERS_NO = 5
|
||||
TARGET_PORT = 8080
|
||||
key_name = f"ssh-{CLIENT_ID}"
|
||||
net_name = f"webservice-net-{CLIENT_ID}"
|
||||
server_name = f"webservice-server-{CLIENT_ID}"
|
||||
@ -49,8 +51,10 @@ def load_key(pub_key_path):
|
||||
|
||||
def create_key(client, key_name, pub_key_path):
|
||||
print("The SSH KEY has been...")
|
||||
key_of_power = load_key(pub_key_path)
|
||||
key = client.ssh_keys.create(name=key_name, public_key=key_of_power)
|
||||
key = client.ssh_keys.get_by_name(key_name) or None
|
||||
if not key:
|
||||
key_of_power = load_key(pub_key_path)
|
||||
key = client.ssh_keys.create(name=key_name, public_key=key_of_power)
|
||||
print("\tCREATED")
|
||||
return key
|
||||
|
||||
@ -66,20 +70,24 @@ def remove_key(client, key_name):
|
||||
|
||||
|
||||
def create_network(client, net_name, ip_range):
|
||||
print("The NETWORK has been...", end="")
|
||||
net = client.networks.create(
|
||||
name=net_name,
|
||||
ip_range=ip_range,
|
||||
subnets=[
|
||||
NetworkSubnet(ip_range=ip_range, network_zone="eu-central", type="cloud")
|
||||
],
|
||||
)
|
||||
print(f"The NETWORK {net_name} has been...", end="")
|
||||
net = client.networks.get_by_name(net_name) or None
|
||||
if not net:
|
||||
net = client.networks.create(
|
||||
name=net_name,
|
||||
ip_range=ip_range,
|
||||
subnets=[
|
||||
NetworkSubnet(
|
||||
ip_range=ip_range, network_zone="eu-central", type="cloud"
|
||||
)
|
||||
],
|
||||
)
|
||||
print("CREATED")
|
||||
return net
|
||||
|
||||
|
||||
def remove_network(client, net_name):
|
||||
print("The NETWORK has been...", end="")
|
||||
print(f"The NETWORK {net_name} has been...", end="")
|
||||
try:
|
||||
action = client.networks.delete(client.networks.get_by_name(net_name))
|
||||
action.wait_until_finished()
|
||||
@ -90,23 +98,27 @@ def remove_network(client, net_name):
|
||||
|
||||
|
||||
def create_server(client, server_name, ssh_key, vnet, location, user_data):
|
||||
print("The WEBSERVICE has been CREATED:", end=" ")
|
||||
webserver = client.servers.create(
|
||||
name=server_name,
|
||||
server_type=ServerType("cx11"),
|
||||
image=Image(name="ubuntu-22.04"),
|
||||
ssh_keys=[ssh_key],
|
||||
networks=[vnet],
|
||||
location=location,
|
||||
user_data=user_data,
|
||||
)
|
||||
webserver.action.wait_until_finished()
|
||||
print(webserver.action.complete)
|
||||
return webserver
|
||||
webserver = client.servers.get_by_name(server_name) or None
|
||||
if webserver is not None:
|
||||
print(f"The WEBSERVICE {server_name} already exists")
|
||||
else:
|
||||
print(f"The WEBSERVICE {server_name}has been CREATED:", end=" ")
|
||||
webserver = client.servers.create(
|
||||
name=server_name,
|
||||
server_type=ServerType("cx11"),
|
||||
image=Image(name="ubuntu-22.04"),
|
||||
ssh_keys=[ssh_key],
|
||||
networks=[vnet],
|
||||
location=location,
|
||||
user_data=user_data,
|
||||
)
|
||||
webserver.action.wait_until_finished()
|
||||
print(webserver.action.complete)
|
||||
return server_name
|
||||
|
||||
|
||||
def remove_server(client, server_name):
|
||||
print("The WEBSERVICE has been...", end="")
|
||||
print(f"The WEBSERVICE {server_name} has been...", end="")
|
||||
try:
|
||||
action = client.servers.delete(client.servers.get_by_name(server_name))
|
||||
action.wait_until_finished()
|
||||
@ -116,7 +128,15 @@ def remove_server(client, server_name):
|
||||
|
||||
|
||||
def create_load_balancer(client, name, location, vnet, servers):
|
||||
print("The LOAD BALANCER has been CREATED:", end=" ")
|
||||
targets = [
|
||||
LoadBalancerTarget(
|
||||
type="server",
|
||||
server=client.servers.get_by_name(server),
|
||||
use_private_ip=True,
|
||||
)
|
||||
for server in servers
|
||||
]
|
||||
print(f"The LOAD BALANCER {name} has been CREATED:", end=" ")
|
||||
lb = client.load_balancers.create(
|
||||
name=name,
|
||||
load_balancer_type=LoadBalancerType("lb11"),
|
||||
@ -124,32 +144,32 @@ def create_load_balancer(client, name, location, vnet, servers):
|
||||
services=[
|
||||
LoadBalancerService(
|
||||
protocol="http",
|
||||
listen_port=8080,
|
||||
destination_port=8080,
|
||||
listen_port=TARGET_PORT,
|
||||
destination_port=TARGET_PORT,
|
||||
proxyprotocol=False,
|
||||
health_check=LoadBalancerHealthCheck(
|
||||
protocol="http",
|
||||
port=8080,
|
||||
interval=20,
|
||||
port=TARGET_PORT,
|
||||
interval=15,
|
||||
timeout=10,
|
||||
retries=3,
|
||||
http=LoadBalancerHealtCheckHttp(
|
||||
path="/factors/6", status_codes=["2xx", "3xx"], tls=False
|
||||
path="/factors/6", status_codes=["2??", "3??"], tls=False
|
||||
),
|
||||
),
|
||||
)
|
||||
],
|
||||
targets=servers,
|
||||
targets=targets,
|
||||
public_interface=True,
|
||||
network=vnet,
|
||||
)
|
||||
lb.action.wait_until_finished()
|
||||
print(lb.action.complete)
|
||||
return lb
|
||||
return client.load_balancers.get_by_name(name)
|
||||
|
||||
|
||||
def remove_load_balancer(client, name):
|
||||
print("The LOAD BALANCER has been...", end="")
|
||||
print(f"The LOAD BALANCER {name} has been...", end="")
|
||||
try:
|
||||
action = client.load_balancers.delete(client.load_balancers.get_by_name(name))
|
||||
action.wait_until_finished()
|
||||
@ -176,14 +196,11 @@ if __name__ == "__main__":
|
||||
for i in range(SERVERS_NO)
|
||||
]
|
||||
|
||||
# print(
|
||||
# f"You can access the server (in a few minutes) under the address: http://{server.server.data_model.public_net.ipv4.ip}:3000"
|
||||
# )
|
||||
load_balancer = create_load_balancer(
|
||||
client, load_balancer_name, location, vnet, servers
|
||||
)
|
||||
print(
|
||||
f"Your service should be available at {load_balancer.load_balancer.data_model.public_net.ipv4.ip}\n\n\t\tHave fun!"
|
||||
f"\nYour service should be available at:\n\thttp://{load_balancer.data_model.public_net.ipv4.ip}:{TARGET_PORT}\n\n\t\tHave fun!"
|
||||
)
|
||||
elif action == "--clean":
|
||||
remove_load_balancer(client, load_balancer_name)
|
||||
|
Loading…
Reference in New Issue
Block a user