Size: a a a

2021 June 22

BL

Blood Lust in terraform_ru
destination = "${hcloud_volume.mynamevolume.id}namefile.txt" ??
источник

Р

Раф in terraform_ru
ага “${hcloud_volume.mynamevolume.id}/namefile.txt"
источник

BL

Blood Lust in terraform_ru
ну могу кинуть фойлик он небольшой посмотришь - но да я думаю что провизионер запускается после того как сервер создался и к нему волум подключился
источник

BL

Blood Lust in terraform_ru
ок пробну сейчас - спс
источник

BL

Blood Lust in terraform_ru
Error: Cycle: hcloud_server.ubuntu-docker-main, hcloud_volume.volume-registry
источник

BL

Blood Lust in terraform_ru
вот файлик сам тераформа
источник

ВИ

Владимир Ильяков... in terraform_ru
ну кстати да, тут петля получается, оба ресурса зависят друг от друга.
Можно провижинить файлик через userdata, в userdata передавать имя volume и через API проверять подключен ли он...
источник

ВИ

Владимир Ильяков... in terraform_ru
С Hetzner Cloud не работал, возможно есть более "прямое" решение
источник

BL

Blood Lust in terraform_ru
ну я тоже так вначале думал - но это какое-то костыльное решение я и так в юзердату запихнул стартовые команды для установки :)
источник

ВИ

Владимир Ильяков... in terraform_ru
норм, terraform-ом создаешь инстанс, в user-data запускаешь SCM скрипт
под капотом automount, тоже скрипт https://docs.hetzner.com/cloud/volumes/faq/
источник

BL

Blood Lust in terraform_ru
ага спс  - попробуем и так раз уж по другому не выходить :)
источник

BL

Blood Lust in terraform_ru
попробывал такую структуру - ошибок не выдало но файл тоже не скопировался
resource "hcloud_volume" "volume-registry" {
 name      = "volume-docker-registry"
 size      = 10
 format    = "ext4"
 server_id = hcloud_server.ubuntu-docker-main.id
 automount = true
 connection {
    type = "ssh"
    user = "root"
    private_key = "${file(var.ssh_private_key)}"
    host        = "${hcloud_server.ubuntu-docker-main.ipv4_address}"
    }
 provisioner "file" {
    source = "tamplates/slave.yaml"
    destination = "${hcloud_volume.volume-registry.id}/slave.yaml"
    }
}
источник

BL

Blood Lust in terraform_ru
буду пробывать через юзер дату
ещё раз спс
источник

AA

Andrey A in terraform_ru
Добрый вечер! Есть вопрос по terraform (libvirt provider) и module: хочется попробовать разнести конфигурацию для
поднятия виртуалки по отдельным папкам и подгружать их из root module.

Ранее в libvirt.tf было такое:
terraform {
 required_providers {
   libvirt = {
     source  = "dmacvicar/libvirt"
     version = "0.6.3"
   }
 }
 backend "pg" {}
}

resource "libvirt_pool" "vm_pool" {
 name = "vm_pool"
 type = "dir"
 path = var.vm_pool_path
}
....

Потом создал создал отдельную папку vm-qw-1 (предполагаемое название виртуалки) и перенес туда весь код.
Далее создал в корне такой файл:
init.tf:
module "vm-qw-1" {
source = "./vm-qw-1"
}

Наивно пытаюсь сделать:
 terraform init -backend-config="conn_str=postgres ...
Initializing provider plugins...
- Reusing previous version of dmacvicar/libvirt from the dependency lock file
- Reusing previous version of hashicorp/template from the dependency lock file
- Finding latest version of hashicorp/libvirt...
- Using previously-installed dmacvicar/libvirt v0.6.3
- Using previously-installed hashicorp/template v2.2.0

│ Error: Failed to query available provider packages

│ Could not retrieve the list of available versions for provider hashicorp/libvirt: provider registry registry.terraform.io does not have a provider named
│ registry.terraform.io/hashicorp/libvirt

│ Did you intend to use dmacvicar/libvirt? If so, you must specify that source address in each module which requires that provider. To see which modules are currently depending on
│ hashicorp/libvirt, run the following command:
│     terraform providers

Проверяю:
terraform providers

Providers required by configuration:
├── provider[registry.terraform.io/hashicorp/libvirt]
└── module.vm-qw-1
   ├── provider[registry.terraform.io/hashicorp/template]
   └── provider[registry.terraform.io/dmacvicar/libvirt] 0.6.3


Если выполнить команду, когда всё на уровне одной папки (нет никаких вложенных папок):
terraform providers
Providers required by configuration:
├── provider[registry.terraform.io/hashicorp/template]
└── provider[registry.terraform.io/dmacvicar/libvirt] 0.6.3
источник

AA

Andrey A in terraform_ru
источник

S

Salem in terraform_ru
terraform {
 required_providers {
   libvirt = {
     source  = "dmacvicar/libvirt"
     version = "0.6.3"
   }
 }
 backend "pg" {}
}
источник

S

Salem in terraform_ru
в init.tf положи
источник

AA

Andrey A in terraform_ru
 # cat init.tf 

terraform {
 required_providers {
   libvirt = {
     source  = "dmacvicar/libvirt"
     version = "0.6.3"
   }
 }
 backend "pg" {}
}

module "vm-qw-1" {
source = "./vm-qw-1"
}
# cat vm-qw-1/libvirt.tf

provider "libvirt" {
 uri = "qemu+ssh://root@some-server/system"
 alias  = "kvm"
}
resource "libvirt_pool" "vm_pool" {
 name = "vm_pool"
 type = "dir"
 path = var.vm_pool_path
}
...
# terraform init -backend-config="conn_str=postgres://
Initializing provider plugins...
- Reusing previous version of hashicorp/template from the dependency lock file
- Reusing previous version of dmacvicar/libvirt from the dependency lock file
- Finding latest version of hashicorp/libvirt...
- Using previously-installed hashicorp/template v2.2.0
- Using previously-installed dmacvicar/libvirt v0.6.3

│ Error: Failed to query available provider packages

│ Could not retrieve the list of available versions for provider hashicorp/libvirt: provider registry registry.terraform.io does not have a provider named
│ registry.terraform.io/hashicorp/libvirt

│ Did you intend to use dmacvicar/libvirt? If so, you must specify that source address in each module which requires that provider. To see which modules are currently depending on
│ hashicorp/libvirt, run the following command:
│     terraform providers

# terraform providers

Providers required by configuration:
.
├── provider[registry.terraform.io/dmacvicar/libvirt] 0.6.3
└── module.vm-qw-1
   ├── provider[registry.terraform.io/hashicorp/libvirt]
   └── provider[registry.terraform.io/hashicorp/template]
источник

OB

Oleksii Borodai in terraform_ru
У тебя провайдер определён в самом модуле vm-qw-1?
источник

AA

Andrey A in terraform_ru
поправил, да, забыл указать сам provider. Пробовал указывать и в init.tf и в vm-qw-1/libvirt.tf - ошибка та же
источник