KVM에서 Terraform을 통해 VM 게스트를 배포하려고 합니다.
게스트 가상 머신이 배포되었지만 IP를 얻지 못합니다.
내가 뭘 잘못했나요?
이것은 내 main.tf입니다.
terraform {
required_providers {
libvirt = {
source = "dmacvicar/libvirt"
}
}
}
provider "libvirt" {
uri = "qemu:///system"
}
resource "libvirt_volume" "centos7-qcow2" {
name = "centos7.qcow2"
pool = "default"
source = "http://......qcow2"
format = "qcow2"
}
data "template_file" "user_data" {
template = "${file("${path.module}/cloud_init.cfg")}"
}
data "template_file" "cloudinit_network" {
template = "${file("${path.module}/network.cfg")}"
vars = {}
}
resource "libvirt_cloudinit_disk" "commoninit" {
name = "commoninit.iso"
user_data = "${data.template_file.user_data.rendered}"
network_config = data.template_file.cloudinit_network.rendered
}
resource "libvirt_domain" "gw2" {
name = "gw2"
memory = "8192"
vcpu = 4
cloudinit = libvirt_cloudinit_disk.commoninit.id
qemu_agent = true
network_interface {
addresses = ["10.100.86.201"]
bridge = "br0"
#wait_for_lease = true
}
boot_device {
dev = [ "hd", "network"]
}
disk {
volume_id = "${libvirt_volume.centos7-qcow2.id}"
}
console {
type = "pty"
target_type = "serial"
target_port = "0"
}
graphics {
type = "spice"
listen_type = "address"
autoport = true
}
}
output "ips" {
value = libvirt_domain.gw2.*.network_interface.0.addresses
}
내 network.cfg 파일:
version: 2
ethernets:
eth0:
dhcp4: true
dhcp6: false
당신의 도움을 주셔서 감사합니다!
내 Terraform 버전: linux_amd64의 Terraform v1.0.10
- 공급자registry.terraform.io/dmacvicar/libvirt v0.6.11
- 공급자registry.terraform.io/hashicorp/template v2.2.0
답변1
libvirt_network
사용해야 할 사항은 다음과 같습니다 .
mode = "bridge"
파일 아래에서 network.cfg
다음과 같은 것을 사용해야 합니다:
network:
version: 1
config:
- type: physical
name: eth0
subnets:
- type: static
address: 10.94.13.27/22
gateway: 10.94.13.1
dns_nameservers: [ 10.94.244.11 ]
이는 cloud init가 고정 IP를 설정한다는 의미입니다.