diff --git a/hetzner_3_4/Dockerfile b/hetzner_3_4/Dockerfile new file mode 100644 index 0000000..0d3617b --- /dev/null +++ b/hetzner_3_4/Dockerfile @@ -0,0 +1,6 @@ +FROM hashicorp/terraform:latest + +COPY init-server init-server +COPY main.tf main.tf + +ENTRYPOINT terraform init && terraform apply -var="token=${token}" -auto-approve && sleep 180 && terraform destroy -var="token=${token}" -auto-approve \ No newline at end of file diff --git a/hetzner_3_4/deploy.sh b/hetzner_3_4/deploy.sh new file mode 100755 index 0000000..5352e65 --- /dev/null +++ b/hetzner_3_4/deploy.sh @@ -0,0 +1,5 @@ +#!/bin/bash +token=$1 + +docker build -t vscode-hetzner . +docker run -e token=${1} vscode-hetzner \ No newline at end of file diff --git a/hetzner_3_4/init-server b/hetzner_3_4/init-server new file mode 100644 index 0000000..8165960 --- /dev/null +++ b/hetzner_3_4/init-server @@ -0,0 +1,20 @@ +#cloud-config +packages: + - curl + +write_files: + - path: /root/install.sh + content: | + curl -fsSL https://code-server.dev/install.sh > /root/install.sh + - path: /root/config.yml + content: | + bind-addr: 0.0.0.0 + port: 80 + password: password + cert: false + +runcmd: + - cd /root/ + - chmod +x install.sh + - ./install.sh + - code-server --config config.yml \ No newline at end of file diff --git a/hetzner_3_4/main.tf b/hetzner_3_4/main.tf new file mode 100644 index 0000000..b1d8602 --- /dev/null +++ b/hetzner_3_4/main.tf @@ -0,0 +1,44 @@ +terraform { + required_providers { + hcloud = { + source = "hetznercloud/hcloud" + version = "1.32.1" + } + } +} + +variable "token" { + type = string +} + +provider "hcloud" { + token = var.token +} + +resource "hcloud_server" "ubuntu_server" { + name = "bk-terraform-server" + image = "ubuntu-20.04" + server_type = "cx11" + + network { + network_id = hcloud_network.network.id + } + + user_data = file("init-server") +} + +resource "hcloud_network" "network" { + name = "bk-terraform-network" + ip_range = "10.0.1.0/24" +} + +resource "hcloud_network_subnet" "subnet" { + network_id = hcloud_network.network.id + type = "cloud" + network_zone = "eu-central" + ip_range = "10.0.1.0/24" +} + +output "link" { + value = "http://${hcloud_server.ubuntu_server.ipv4_address}" +} \ No newline at end of file