Zum Inhalt springen
FloatingIP-to-DNS

FloatingIP-to-DNS

FloatingIP-to-DNS

DNS-Konfiguration

Öffentliches/privates Schlüsselpaar generieren:

$ tsig-keygen -a HMAC-MD5 www.domain.com.

DNS-Zone wie folgt konfigurieren:

...
key "www.domain.com" {
  algorithm hmac-md5;
  secret "the-value-of-the-generated-key-that-you-can-see-in-public-and-private-keys ==";
};
...
zone "domain.com" {
  type master;
  file "/etc/bind/keys.d/domain.com.tsig";
  allow-update { key "www.domain.com."; };
};

Terraform-Konfiguration

module cache-openstack-floatingip-to-register {

    source = "./modules/cache-openstack-floatingip-to-register"
    
    dns_suffix = var.dns_suffix
    dns_fip_default_ttl = var.dns_fip_default_ttl

}

module register-openstack-floatingip-to-external-dns1 {

    source = "./modules/register-openstack-floatingip-to-external-dns"

    ddns_suffix   = module.cache-openstack-floatingip-to-register.dns_suffix
    ddns_fip_name = module.cache-openstack-floatingip-to-register.dns_fip_name
    ddns_fip_ipv4 = module.cache-openstack-floatingip-to-register.dns_fip_ipv4
    ddns_fip_ttl  = module.cache-openstack-floatingip-to-register.dns_fip_ttl

    ddns_server_ip     = var.dns2__ddns_server_ip
    ddns_key_name      = var.dns2__ddns_key_name
    ddns_key_algorithm = var.dns2__ddns_key_algorithm
    ddns_key_secret    = var.dns2__ddns_key_secret

}

module register-openstack-floatingip-to-external-dns2 {

    source = "./modules/register-openstack-floatingip-to-external-dns"

    ddns_suffix   = module.cache-openstack-floatingip-to-register.dns_suffix
    ddns_fip_name = module.cache-openstack-floatingip-to-register.dns_fip_name
    ddns_fip_ipv4 = module.cache-openstack-floatingip-to-register.dns_fip_ipv4
    ddns_fip_ttl  = module.cache-openstack-floatingip-to-register.dns_fip_ttl

    ddns_server_ip     = var.dns2__ddns_server_ip
    ddns_key_name      = var.dns2__ddns_key_name
    ddns_key_algorithm = var.dns2__ddns_key_algorithm
    ddns_key_secret    = var.dns2__ddns_key_secret

}

module/cache-openstack-floatingip-to-register

Das Terraform-Modul cache-openstack-floatingip-to-register fragt eine OpenStack-Instanz auf einem bestimmten Projekt ab, um die Liste der Floating-IPs und ihrer zugehörigen Tags zu erhalten.
terraform {
  required_version = ">= 0.14.0"
  required_providers {
    openstack = {
      source  = "terraform-provider-openstack/openstack"
      version = "~> 1.48.0"
    }
    external = {
      version = "~> 2.2.3"
    }
  }
}
resource dns_a_record_set record {

    for_each = var.ddns_fip_name

    name = each.value
    zone = var.ddns_suffix
    addresses = [
        lookup(var.ddns_fip_ipv4, each.key)
    ]
    ttl = tonumber(lookup(var.ddns_fip_ttl, each.key))

}

module/register-openstack-floatingip-to-external-dns

Das Terraform-Modul register-openstack-floatingip-to-external-dns registriert Floating-IPs bei Bedarf im DNS, unter Verwendung der vom Modul cache-openstack-floatingip-to-register gesammelten Informationen.