2024-03-19 10:16:01 -05:00
|
|
|
terraform {
|
|
|
|
required_providers {
|
|
|
|
cloudflare = {
|
|
|
|
source = "cloudflare/cloudflare"
|
|
|
|
version = "~>4.0"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
provider "cloudflare" {
|
|
|
|
api_token = var.cloudflare_token
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "cloudflare_tunnel" "tunnel" {
|
|
|
|
account_id = var.account_id
|
|
|
|
name = "exercise"
|
|
|
|
secret = var.tunnel_secret
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "cloudflare_record" "notfound" {
|
|
|
|
name = "notfound"
|
|
|
|
type = "CNAME"
|
|
|
|
zone_id = var.zone_id
|
|
|
|
value = cloudflare_tunnel.tunnel.cname
|
|
|
|
proxied = true
|
|
|
|
}
|
2024-03-19 10:44:03 -05:00
|
|
|
|
|
|
|
resource "local_sensitive_file" "tunnel_config" {
|
|
|
|
filename = "../roles/cloudflared_tunnel/files/config.yml"
|
|
|
|
content = <<-EOT
|
|
|
|
tunnel: ${cloudflare_tunnel.tunnel.id}
|
|
|
|
credentials-file: /etc/cloudflared/${cloudflare_tunnel.tunnel.id}.json
|
|
|
|
|
|
|
|
ingress:
|
|
|
|
- service: http_status:404
|
|
|
|
EOT
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "local_sensitive_file" "tunnel_creds" {
|
|
|
|
filename = "../roles/cloudflared_tunnel/templates/${cloudflare_tunnel.tunnel.id}.json"
|
|
|
|
content = <<-EOT
|
|
|
|
{
|
|
|
|
"AccountTag": "${var.account_id}",
|
|
|
|
"TunnelID": "{{ tunnel_id }}",
|
|
|
|
"TunnelName": "mastodon",
|
|
|
|
"TunnelSecret": "{{ tunnel_secret }}"
|
|
|
|
}
|
|
|
|
EOT
|
|
|
|
}
|
|
|
|
|
|
|
|
resource "local_sensitive_file" "credentials_variables" {
|
|
|
|
filename = "../host_vars/server2.yml"
|
|
|
|
content = <<-EOT
|
|
|
|
---
|
|
|
|
tunnel_id: ${cloudflare_tunnel.tunnel.id}
|
|
|
|
tunnel_secret: ${var.tunnel_secret}
|
|
|
|
|
|
|
|
EOT
|
|
|
|
}
|
|
|
|
|
|
|
|
|