Skip to content

Instantly share code, notes, and snippets.

@thetechnick
Last active June 22, 2023 17:46
Show Gist options
  • Save thetechnick/12b33e4edfc96e4ccc9800afef2be7c5 to your computer and use it in GitHub Desktop.
Save thetechnick/12b33e4edfc96e4ccc9800afef2be7c5 to your computer and use it in GitHub Desktop.
Hetzner Cloud terraform coreos install
{
"ignition": {
"version": "2.0.0",
"config": {}
},
"storage": {
},
"systemd": {},
"networkd": {},
"passwd": {
"users": [
{
"name": "core",
"sshAuthorizedKeys": [
"<your public key>"
]
}
]
}
}
#!/usr/bin/env sh
set -e
wget https://raw.github.com/coreos/init/master/bin/coreos-install
chmod +x coreos-install
./coreos-install -d /dev/sda -i /root/ignition.json
reboot
provider "hcloud" {
token = "<token>"
}
resource "hcloud_ssh_key" "notebook" {
name = "nschieder@notebook"
public_key = "${file("~/.ssh/id_ed25519.pub")}"
}
resource "hcloud_server" "master" {
name = "master"
image = "debian-9"
server_type = "cx11"
ssh_keys = ["${hcloud_ssh_key.notebook.id}"]
datacenter = "fsn1-dc8"
rescue = "linux64"
connection {
host = "${hcloud_server.master.ipv4_address}"
timeout = "1m"
agent = false
private_key = "${file("~/.ssh/id_ed25519")}"
}
provisioner "file" {
source = "ignition.json"
destination = "/root/ignition.json"
}
provisioner "remote-exec" {
script = "install.sh"
}
provisioner "remote-exec" {
connection {
host = "${hcloud_server.master.ipv4_address}"
timeout = "1m"
agent = false
private_key = "${file("~/.ssh/id_ed25519")}"
user = "core"
}
inline = "sudo hostnamectl set-hostname ${hcloud_server.master.name}"
}
}
resource "hcloud_server" "node1" {
name = "node1"
image = "debian-9"
server_type = "cx11"
ssh_keys = ["${hcloud_ssh_key.notebook.id}"]
datacenter = "fsn1-dc8"
rescue = "linux64"
connection {
host = "${hcloud_server.node1.ipv4_address}"
timeout = "1m"
agent = false
private_key = "${file("~/.ssh/id_ed25519")}"
}
provisioner "file" {
source = "ignition.json"
destination = "/root/ignition.json"
}
provisioner "remote-exec" {
script = "install.sh"
}
provisioner "remote-exec" {
connection {
host = "${hcloud_server.node1.ipv4_address}"
timeout = "1m"
agent = false
private_key = "${file("~/.ssh/id_ed25519")}"
user = "core"
}
inline = "sudo hostnamectl set-hostname ${hcloud_server.node1.name}"
}
}
@mootari
Copy link

mootari commented Aug 22, 2019

@thetechnick Understood, thanks for offering some context (and thanks for this gist!). My current solution also uses null_resource, although properly tainting an existing server resource and applying changes is still a pain. Once I figure that part out I'll link a gist to it here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment