Se define una fuente de datos, para seleccionar la distribución de Linux con la que se creará la instancia.
Para este ejemplo es preciso utilizar alguna que soporte el servicio de metadata, como Ubuntu, para configurarla como servidor web.
data "linode_images" "ubuntu" {
filter {
name = "vendor"
values = ["Ubuntu"]
}
filter {
name = "is_public"
values = ["true"]
}
latest = true
}
Definir una variable local para el script a ejecutar con cloud-init. En este caso, se instala Apache, configurando para que se ejecute utilizando el puerto 8080. También se predefine una página de inicio.
locals {
user_data = <<-EOF
#!/bin/bash
apt-get update
apt-get install -y apache2
sed -i -e 's/80/8080/' /etc/apache2/ports.conf
echo "<marquee><h1>Akamai Connected Cloud</h1></marquee>" > /var/www/html/index.html
systemctl restart apache2
EOF
}
Se define la configuración de la máquina virtual para crear la instancia.
Igual que con la distribución, para este ejemplo es necesario seleccionar una región que soporte el servicio de metadata.
resource "linode_instance" "web_server" {
region = "us-lax"
label = "web_server_tf"
tags = var.tags
image = data.linode_images.ubuntu.images.0.id
type = "g6-nanode-1"
metadata {
user_data = base64encode(local.user_data)
}
}
Al finalizar el proceso, se obtiene la URL del sitio, con base en la IP pública de la instancia y el puerto que se definió.
output "ip" {
value = "Visita http://${linode_instance.web_server.ip_address}:8080"
}