Задать вопрос
@a422

В чем ошибка при разворачивании туннеля через WireGuard в terraform на Yandex Cloud (ALT Linux)?

Строки в настройке WireGuard имеют ошибку в правах.

Как их изменить и на какой файл?

Скрипт всей сети:
terraform {
  required_providers {
    yandex = {
      source = "yandex-cloud/yandex"
    }
  }
}

provider "yandex" {
  token     = var.token
  cloud_id  = var.cloud_id
  folder_id = var.folder_id
}

resource "yandex_vpc_network" "network_internet" {
  name = "INTERNET"
}

resource "yandex_vpc_subnet" "subnet_internet" {
  zone           = "ru-central1-b"
  network_id     = yandex_vpc_network.network_internet.id
  v4_cidr_blocks = ["192.168.100.0/24"]
}

resource "yandex_compute_instance" "web1" {
  name        = "web1"
  hostname    = "web1"
  platform_id = "standard-v3"
  zone        = "ru-central1-b"

  resources {
    cores          = 2
    memory         = 1
    core_fraction  = 50
  }

  boot_disk {
    initialize_params {
      image_id = "fd85bjns7h0brudf99vt"
      size     = 10
      type     = "network-hdd"
    }
  }

  network_interface {
    subnet_id  = yandex_vpc_subnet.subnet_internet.id
    ip_address = "192.168.100.10"
    nat        = true
  }

  metadata = {
    ssh-keys = "altlinux:${file("~/.ssh/id_rsa.pub")}"
  }

  timeouts {
    create = "10m"
  }
}

resource "yandex_compute_instance" "web2" {
  name        = "web2"
  hostname    = "web2"
  platform_id = "standard-v3"
  zone        = "ru-central1-b"

  resources {
    cores          = 2
    memory         = 1
    core_fraction  = 50
  }

  boot_disk {
    initialize_params {
      image_id = "fd85bjns7h0brudf99vt"
      size     = 10
      type     = "network-hdd"
    }
  }

  network_interface {
    subnet_id  = yandex_vpc_subnet.subnet_internet.id
    ip_address = "192.168.100.20"
    nat        = true
  }

  metadata = {
    ssh-keys = "altlinux:${file("~/.ssh/id_rsa.pub")}"
  }

  timeouts {
    create = "10m"
  }
}

resource "yandex_compute_instance" "webadm" {
  name        = "webadm"
  hostname    = "webadm"
  platform_id = "standard-v3"
  zone        = "ru-central1-b"

  resources {
    cores          = 2
    memory         = 1
    core_fraction  = 50
  }

  boot_disk {
    initialize_params {
      image_id = "fd85bjns7h0brudf99vt"
      size     = 10
      type     = "network-hdd"
    }
  }

  network_interface {
    subnet_id  = yandex_vpc_subnet.subnet_internet.id
    ip_address = "192.168.100.30"
    nat        = true
  }

  metadata = {
    ssh-keys = "altlinux:${file("~/.ssh/id_rsa.pub")}"
  }

  timeouts {
    create = "10m"
  }
}

resource "yandex_lb_network_load_balancer" "lb-web" {
  name = "lb-web"

  listener {
    name = "http"
    port = 80
    external_address_spec {
      ip_version = "ipv4"
    }
  }

  listener {
    name = "https"
    port = 443
    external_address_spec {
      ip_version = "ipv4"
    }
  }

  attached_target_group {
    target_group_id = yandex_lb_target_group.lb-group.id

    healthcheck {
      name = "http"
      http_options {
        port = 80
        path = "/"
      }
    }
  }
}

resource "yandex_lb_target_group" "lb-group" {
  name = "lb-group"

  target {
    subnet_id = yandex_vpc_subnet.subnet_internet.id
    address   = yandex_compute_instance.web1.network_interface.0.ip_address
  }

  target {
    subnet_id = yandex_vpc_subnet.subnet_internet.id
    address   = yandex_compute_instance.web2.network_interface.0.ip_address
  }

  target {
    subnet_id = yandex_vpc_subnet.subnet_internet.id
    address   = yandex_compute_instance.webadm.network_interface.0.ip_address
  }
}

output "lb_ip" {
  value = yandex_lb_network_load_balancer.lb-web
}

output "webadm_ip" {
  value = yandex_compute_instance.webadm.network_interface.0.ip_address
}

resource "null_resource" "vpn_setup" {
  depends_on = [
    yandex_compute_instance.webadm,
    yandex_compute_instance.web1,
    yandex_compute_instance.web2
  ]

  provisioner "remote-exec" {
    inline = [
      "sudo su",
      "apt-get update",
      "apt-get install -y wireguard-tools-wg-quick",

      "umask 0777 && wg genkey | tee /etc/wireguard/server.key | wg pubkey > /etc/wireguard/server.pub",
      "umask 0777 && wg genkey | tee /etc/wireguard/client.key | wg pubkey > /etc/wireguard/client.pub",

      "bash -c 'echo -e \"[Interface]\\nAddress = 10.0.0.1/24\\nPrivateKey = $(cat /etc/wireguard/server.key)\\nListenPort = 51820\\n\\n[Peer]\\nPublicKey = $(cat /etc/wireguard/client.pub)\\nAllowedIPs = 10.0.0.2/32\" > /etc/wireguard/wg0.conf'",

      "bash -c 'echo -e \"[Interface]\\nAddress = 10.0.0.2/24\\nPrivateKey = $(cat /etc/wireguard/client.key)\\n\\n[Peer]\\nPublicKey = $(cat /etc/wireguard/server.pub)\\nEndpoint = $(yandex_compute_instance.webadm.network_interface.0.nat_ip_address):51820\\nAllowedIPs = 0.0.0.0/0\" > /etc/wireguard/wg0.conf'",

      "systemctl enable wg-quick@wg0",
      "systemctl start wg-quick@wg0",

      "ssh -o StrictHostKeyChecking=no altlinux@192.168.100.10 'sudo apt-get update && sudo apt-get install -y wireguard'",
      "ssh -o StrictHostKeyChecking=no altlinux@192.168.100.10 'sudo bash -c \"echo -e \\\"[Interface]\\nAddress = 10.0.0.2/24\\nPrivateKey = $(sudo cat /etc/wireguard/client.key)\\n\\n[Peer]\\nPublicKey = $(sudo cat /etc/wireguard/server.pub)\\nEndpoint = $(yandex_compute_instance.webadm.network_interface.0.nat_ip_address):51820\\nAllowedIPs = 0.0.0.0/0\\\" > /etc/wireguard/wg0.conf'\"",

      "ssh -o StrictHostKeyChecking=no altlinux@192.168.100.20 'sudo apt-get update && sudo apt-get install -y wireguard'",
      "ssh -o StrictHostKeyChecking=no altlinux@192.168.100.20 'sudo bash -c \"echo -e \\\"[Interface]\\nAddress = 10.0.0.3/24\\nPrivateKey = $(sudo cat /etc/wireguard/client.key)\\n\\n[Peer]\\nPublicKey = $(sudo cat /etc/wireguard/server.pub)\\nEndpoint = $(yandex_compute_instance.webadm.network_interface.0.nat_ip_address):51820\\nAllowedIPs = 0.0.0.0/0\\\" > /etc/wireguard/wg0.conf'\"",

      "ssh -o StrictHostKeyChecking=no altlinux@192.168.100.10 'sudo systemctl enable wg-quick@wg0'",
      "ssh -o StrictHostKeyChecking=no altlinux@192.168.100.10 'sudo systemctl start wg-quick@wg0'",

      "ssh -o StrictHostKeyChecking=no altlinux@192.168.100.20 'sudo systemctl enable wg-quick@wg0'",
      "ssh -o StrictHostKeyChecking=no altlinux@192.168.100.20 'sudo systemctl start wg-quick@wg0'"
    ]

    connection {
      type        = "ssh"
      host        = yandex_compute_instance.webadm.network_interface.0.nat_ip_address
      user        = "altlinux"
      private_key = file("~/.ssh/id_rsa")
    }
  }
}


если прописываю su в самом начале - скрипт не может найти сам wireguard:

xec): Building Dependency Tree... 60%
null_resource.vpn_setup (remote-exec): Building Dependency Tree... Done
null_resource.vpn_setup (remote-exec): E: Couldn't find package wireguard
null_resource.vpn_setup (remote-exec): /tmp/terraform_1874103965.sh: line 4: wg: command not found
null_resource.vpn_setup (remote-exec): /tmp/terraform_1874103965.sh: line 4: /etc/wireguard/server.pub: No such file or directory
null_resource.vpn_setup (remote-exec): tee: /etc/wireguard/server.key: No such file or directory
null_resource.vpn_setup (remote-exec): /tmp/terraform_1874103965.sh: line 5: wg: command not found
null_resource.vpn_setup (remote-exec): /tmp/terraform_1874103965.sh: line 5: /etc/wireguard/client.pub: No such file or directory
null_resource.vpn_setup (remote-exec): tee: /etc/wireguard/client.key: No such file or directory
null_resource.vpn_setup (remote-exec): cat: /etc/wireguard/server.key: No such file or directory
null_resource.vpn_setup (remote-exec): cat: /etc/wireguard/client.pub: No such file or directory
null_resource.vpn_setup (remote-exec): bash: /etc/wireguard/wg0.conf: No such file or directory
null_resource.vpn_setup (remote-exec): cat: /etc/wireguard/client.key: No such file or directory
null_resource.vpn_setup (remote-exec): cat: /etc/wireguard/server.pub: No such file or directory
null_resource.vpn_setup (remote-exec): bash: yandex_compute_instance.webadm.network_interface.0.nat_ip_address: command not found
null_resource.vpn_setup (remote-exec): bash: /etc/wireguard/wg0.conf: No such file or directory
null_resource.vpn_setup (remote-exec): Failed to enable unit: Unit file wg-quick@wg0.service does not exist.
null_resource.vpn_setup (remote-exec): Failed to start wg-quick@wg0.service: Unit wg-quick@wg0.service not found.
null_resource.vpn_setup (remote-exec): Warning: Identity file /home/altlinux/.ssh/id_rsa not accessible: No such file or directory.
null_resource.vpn_setup (remote-exec): The authenticity of host '51.250.93.167 (51.250.93.167)' can't be established.
null_resource.vpn_setup (remote-exec): ED25519 key fingerprint is SHA256:t0AP6DOyzLsh20ldJAjL4X0eyPskQhLy71v/el5VsW8.
null_resource.vpn_setup (remote-exec): Are you sure you want to continue connecting (yes/no)?
null_resource.vpn_setup: Still creating... [40s elapsed]
  • Вопрос задан
  • 113 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
@dronmaxman
VoIP Administrator
apt-get install -y wireguard-tools wg-quick

Найди 7 отличий
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы