Skip to main content

Primary links

  • Home
  • AI
  • Kubernetes
  • Incus
  • Ansible
  • Terraform
  • OpenStack
  • Virtualization
  • Linux
  • SmartHome
  • HowTo

Misc

  • Linux
  • Hardware
  • Programming
  • Databases
  • Multimedia
  • Windows

Cloud

  • OpenStack
  • cloud-config
  • nextcloud

Virtualization

  • Virtualization
  • Incus
  • Docker
  • KVM
  • Kubernetes
  • LXC
  • LXD
  • QEMU
  • VMware
  • VirtualBox
  • multipass
  • podman
  • vagrant
  • XEN

Network

  • DNS
  • Firewall
  • Linux
  • OpenvSwitch
  • SSL
  • VLAN
  • VPN
  • iPXE
  • namespaces
  • nmcli
  • tcpdump

Storage

  • CEPH
  • DRBD
  • LVM
  • S3
  • ZFS
  • btrfs

Automation / CI/CD

  • Install
  • Ansible
  • GitLab
  • LLM
  • Preseed
  • Puppet
  • Terraform
    • Incus Terraform
    • OpenStack
    • Run Ansible from Terraform
    • snippets
  • Ubuntu autoinstall

Monitoring / Visualisation

  • Grafana
  • Icinga
  • Prometheus
  • Monitoring
  • ELK
  • mermaid
  • terraform

local-exec:

data "template_file" "user_data" {
  template = < /tmp/debug"
      ]

    connection {
      type        = "ssh"
      host        = openstack_networking_floatingip_v2.floatingip_1.address
      user        = "ubuntu"
      private_key = file(pathexpand("~/.ssh/id_rsa"))
    }
  }

  provisioner "local-exec" {
    command = "TF_STATE=terraform.tfstate ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i inventory install-nginx.yml"
  }

  depends_on = [openstack_networking_floatingip_v2.floatingip_1]        
}


resource "local_file" "hosts_cfg" {
  content = templatefile("inventory.tmpl",
    {
      ubuntu_hosts = openstack_networking_floatingip_v2.floatingip_1.*.address
    }
  )
  filename = "inventory"
  depends_on = [openstack_networking_floatingip_associate_v2.instance_fip_association]
}

Links
https://github.com/knetsolutions/learn-terraform-with-openstack/blob/master/provisioner/README.md
https://www.digitalocean.com/community/tutorials/how-to-use-ansible-with-terraform-for-configuration-management

subnetpool

# DEV only
# resource "openstack_networking_subnetpool_v2" "subnetpool_1" {
#   # count = var.env == "dev" ? 1 : 0

#   name = "subnetpool_1"
#   # prefixes = ["10.0.0.0/16"]
#   prefixes = [var.test_subnet_cidr]
#   # address_scope_id = "1a68b969-b6d1-43ba-8bd0-4c6b770e3012" # DEV only
# }

resource "openstack_networking_subnet_v2" "subnet_1" {
  network_id = openstack_networking_network_v2.network_1.id
  name       = var.test_subnet
  cidr       = var.test_subnet_cidr

  # DEV only
  # subnetpool_id = openstack_networking_subnetpool_v2.subnetpool_1.id

  # depends_on = [openstack_networking_subnetpool_v2.subnetpool_1]  
}

# show sensitive variable
terraform output -raw my_password

# run specific task
terraform apply -auto-approve -replace=terraform_data.foo_api_key

DNS loockup

data "dns_a_record_set" "google" {
  host = "google.com"
}

output "google_addrs" {
  value = join(",", data.dns_a_record_set.google.addrs)
}

Profiles GitHub StackOverflow LinkedIn Xing
Contact Imprint
© panticz 2026

Cookie-Einstellungen

Diese Website nutzt eingebettete Inhalte von Drittanbietern (z.B. YouTube, SoundCloud). Beim Laden dieser Inhalte werden Daten an die jeweiligen Anbieter übermittelt. Datenverarbeitungserklärung