from hcloud import Client from hcloud.networks.domain import NetworkSubnet from hcloud.locations.domain import Location from hcloud.images.domain import Image from hcloud.server_types.domain import ServerType client = Client( token="oiA3vdWArVn67e4kHdyIKjDdnGNQGxEJJUI0ln8GrTsZjs10cmyAkqwjC3ufdZC8" ) PREFIX = "464979" ssh_key = client.ssh_keys.get_by_name(name="464979-pzc-ssh-key") print(f"Klucz {ssh_key.data_model.name} został dodany: {ssh_key.data_model.public_key}") vnet = client.networks.create( name=f"{PREFIX}-gitea-net", ip_range="10.10.10.0/24", subnets=[ NetworkSubnet(ip_range="10.10.10.0/24", network_zone="eu-central", type="cloud") ] ) print(f"Utworzono sieć wirtualną {vnet.data_model.name} ({vnet.data_model.ip_range})") with open("db_cloud_init.yml", 'r', encoding='utf-8') as file: cloud_init_db = file.read() db_server = client.servers.create( name=f"{PREFIX}-db", server_type=ServerType("cpx11"), image=Image(name="ubuntu-22.04"), ssh_keys=[ssh_key], networks=[vnet], location=Location("hel1"), user_data=cloud_init_db ) db_server.action.wait_until_finished() print(f"Tworzenie serwera db: {db_server.action.complete}") db_server = client.servers.get_by_name(f"{PREFIX}-db") print(f"Serwer: {db_server.data_model.name}\n\tpubliczne IP: {db_server.data_model.public_net.ipv4.ip}\n\tprywatne IP: {db_server.data_model.private_net[0].ip}") volume_name = f"{PREFIX}-gitea-vol" volume = client.volumes.create( name=volume_name, size=10, format='ext4', location=Location("hel1") ) print(f"Created data volume: {volume.volume.name}") with open("gitea_cloud_init.yml", 'r', encoding='utf-8') as file: cloud_init_wp1 = file.read() cloud_init_wp1.replace("VOLUME_NAME", volume_name) wp1_server = client.servers.create( name=f"{PREFIX}-gitea", server_type=ServerType("cpx11"), image=Image(name="ubuntu-22.04"), ssh_keys=[ssh_key], networks=[vnet], volumes=[volume.volume], location=Location("hel1"), user_data=cloud_init_wp1 ) wp1_server.action.wait_until_finished() print(f"Tworzenie serwera Gitea: {wp1_server.action.complete}") wp1_server = client.servers.get_by_name(f"{PREFIX}-gitea") print( f"Serwer: {wp1_server.data_model.name}\n\tpubliczne IP: {wp1_server.data_model.public_net.ipv4.ip}\n\tprywatne IP: {wp1_server.data_model.private_net[0].ip}")