2022-02-19 13:38:24 +01:00
|
|
|
resource "hcloud_server" "server" {
|
|
|
|
name = var.name
|
|
|
|
|
|
|
|
image = "ubuntu-20.04"
|
|
|
|
rescue = "linux64"
|
|
|
|
server_type = var.server_type
|
|
|
|
location = var.location
|
|
|
|
ssh_keys = var.ssh_keys
|
|
|
|
firewall_ids = var.firewall_ids
|
|
|
|
placement_group_id = var.placement_group_id
|
|
|
|
|
|
|
|
|
|
|
|
labels = var.labels
|
|
|
|
|
|
|
|
connection {
|
|
|
|
user = "root"
|
|
|
|
private_key = local.ssh_private_key
|
|
|
|
agent_identity = local.ssh_identity
|
|
|
|
host = self.ipv4_address
|
|
|
|
}
|
|
|
|
|
|
|
|
provisioner "file" {
|
2022-02-20 11:30:07 +01:00
|
|
|
content = local.ignition_config
|
2022-02-19 13:38:24 +01:00
|
|
|
destination = "/root/config.ign"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Combustion script file to install k3s-selinux
|
|
|
|
provisioner "file" {
|
|
|
|
content = local.combustion_script
|
|
|
|
destination = "/root/script"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Install MicroOS
|
|
|
|
provisioner "remote-exec" {
|
|
|
|
inline = local.microOS_install_commands
|
|
|
|
}
|
|
|
|
|
|
|
|
# Issue a reboot command
|
|
|
|
provisioner "local-exec" {
|
|
|
|
command = "ssh ${local.ssh_args} root@${self.ipv4_address} '(sleep 2; reboot)&'; sleep 3"
|
|
|
|
}
|
|
|
|
|
|
|
|
# Wait for MicroOS to reboot and be ready
|
|
|
|
provisioner "local-exec" {
|
|
|
|
command = <<-EOT
|
|
|
|
until ssh ${local.ssh_args} -o ConnectTimeout=2 root@${self.ipv4_address} true 2> /dev/null
|
|
|
|
do
|
|
|
|
echo "Waiting for MicroOS to reboot and become available..."
|
2022-02-20 11:30:07 +01:00
|
|
|
sleep 3
|
2022-02-19 13:38:24 +01:00
|
|
|
done
|
|
|
|
EOT
|
|
|
|
}
|
|
|
|
|
|
|
|
provisioner "remote-exec" {
|
|
|
|
inline = [
|
|
|
|
# Disable automatic reboot (after transactional updates), and configure the reboot method as kured
|
2022-02-25 15:30:39 +01:00
|
|
|
"set -ex",
|
|
|
|
"rebootmgrctl set-strategy off",
|
|
|
|
"echo 'REBOOT_METHOD=kured' > /etc/transactional-update.conf",
|
2022-02-22 04:11:24 +01:00
|
|
|
# set the hostname
|
2022-02-25 15:30:39 +01:00
|
|
|
"hostnamectl set-hostname ${self.name}"
|
2022-02-19 13:38:24 +01:00
|
|
|
]
|
|
|
|
}
|
|
|
|
}
|
2022-02-24 17:57:36 +01:00
|
|
|
|
|
|
|
resource "hcloud_server_network" "server" {
|
2022-02-25 19:16:38 +01:00
|
|
|
ip = var.private_ip
|
|
|
|
server_id = hcloud_server.server.id
|
|
|
|
subnet_id = var.subnet_id
|
2022-02-24 17:57:36 +01:00
|
|
|
}
|