Answers: <p>I guess the issue is here:</p>
  <p>default = &quot;10.10.10.10/24&quot;</p>
  <p>you have defined a network address and not a subnet. Try and change the IP address to a subnet address it should work.</p>
  
Answers: CC BY-SA 4.0
Answers: 2020-11-26T16:53:40.893Z
Answers: 2020-11-26T16:53:40.893Z
Answers: Bernd
Body: <p>I wanted to spin up a test environment locally using the description from this stackoverflow answer:
  <a href="https://stackoverflow.com/a/58607900/4397899">https://stackoverflow.com/a/58607900/4397899</a></p>
  
  <p>The main.tf looks like</p>
  
  <pre><code>################################################################################
  # ENV VARS
  ################################################################################
  
  # https://www.terraform.io/docs/commands/environment-variables.html
  
  variable "VM_COUNT" {
    default = 3
    type = number
  }
  
  variable "VM_USER" {
    default = "developer"
    type = string
  }
  
  variable "VM_HOSTNAME" {
    default = "ci-vm"
    type = string
  }
  
  variable "VM_IMG_URL" {
    default = "https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img"
    type = string
  }
  
  variable "VM_IMG_FORMAT" {
    default = "qcow2"
    type = string
  }
  
  variable "VM_CIDR_RANGE" {
    default = "10.10.10.10/24"
    type = string
  }
  
  
  ################################################################################
  # PROVIDERS
  ################################################################################
  
  # instance the provider
  provider "libvirt" {
    uri = "qemu:///system"
  }
  
  
  ################################################################################
  # DATA TEMPLATES
  ################################################################################
  
  # https://www.terraform.io/docs/providers/template/d/file.html
  
  # https://www.terraform.io/docs/providers/template/d/cloudinit_config.html
  data "template_file" "user_data" {
    template = file("${path.module}/cloud_init.cfg")
    vars = {
      VM_USER = var.VM_USER
    }
  }
  
  data "template_file" "network_config" {
    template = file("${path.module}/network_config.cfg")
  }
  
  
  ################################################################################
  # RESOURCES
  ################################################################################
  
  resource "libvirt_pool" "vm" {
    name = "${var.VM_HOSTNAME}_pool"
    type = "dir"
    path = "/tmp/terraform-provider-libvirt-pool-ubuntu"
  }
  
  # We fetch the latest ubuntu release image from their mirrors
  resource "libvirt_volume" "vm" {
    count  = var.VM_COUNT
    name   = "${var.VM_HOSTNAME}-${count.index}_volume.${var.VM_IMG_FORMAT}"
    pool   = libvirt_pool.vm.name
    source = var.VM_IMG_URL
    format = var.VM_IMG_FORMAT
  }
  
  # Create a public network for the VMs
  resource "libvirt_network" "vm_public_network" {
     name = "${var.VM_HOSTNAME}_network"
     mode = "nat"
     domain = "${var.VM_HOSTNAME}.local"
     addresses = ["${var.VM_CIDR_RANGE}"]
     dhcp {
      enabled = true
     }
     dns {
      enabled = true
     }
  }
  
  # for more info about paramater check this out
  # https://github.com/dmacvicar/terraform-provider-libvirt/blob/master/website/docs/r/cloudinit.html.markdown
  # Use CloudInit to add our ssh-key to the instance
  # you can add also meta_data field
  resource "libvirt_cloudinit_disk" "cloudinit" {
    name           = "${var.VM_HOSTNAME}_cloudinit.iso"
    user_data      = data.template_file.user_data.rendered
    network_config = data.template_file.network_config.rendered
    pool           = libvirt_pool.vm.name
  }
  
  # Create the machine
  resource "libvirt_domain" "vm" {
    count  = var.VM_COUNT
    name   = "${var.VM_HOSTNAME}-${count.index}"
    memory = "1024"
    vcpu   = 1
  
    cloudinit = "${libvirt_cloudinit_disk.cloudinit.id}"
  
    # TODO: Automate the creation of public network
    network_interface {
      network_id = "${libvirt_network.vm_public_network.id}"
      #network_id = "6d8e2494-835d-4baf-a14f-3a5c705febcc"
      #network_name = "vm_docker_network"
      network_name = "${libvirt_network.vm_public_network.name}"
    }
  
    # IMPORTANT
    # Ubuntu can hang is a isa-serial is not present at boot time.
    # If you find your CPU 100% and never is available this is why.
    #
    # This is a known bug on cloud images, since they expect a console
    # we need to pass it:
    # https://bugs.launchpad.net/cloud-images/+bug/1573095
    console {
      type        = "pty"
      target_port = "0"
      target_type = "serial"
    }
  
    console {
      type        = "pty"
      target_type = "virtio"
      target_port = "1"
    }
  
    disk {
      volume_id = "${libvirt_volume.vm[count.index].id}"
    }
  
    graphics {
      type        = "spice"
      listen_type = "address"
      autoport    = true
    }
  }
  
  
  ################################################################################
  # TERRAFORM CONFIG
  ################################################################################
  
  terraform {
    required_version = "&gt;= 0.12"
  }
  </code></pre>
  
  <p>The network_config.cfg looks like this</p>
  
  <pre><code>version: 2
  ethernets:
    ens3:
       dhcp4: true
  </code></pre>
  
  <p>Steps to Reproduce Issue</p>
  
  <p>Run</p>
  
  <pre><code>terraform init
  terraform apply
  </code></pre>
  
  <p>Then I get the error message:</p>
  
  <pre><code>Error: Error creating libvirt network: virError(Code=38, Domain=0, Message='error creating bridge interface ci-vm_network-br: Numerical result out of range')
  </code></pre>
  
Tags: <terraform>
Title: Terraform fails on creating network with libvirt provider
UserDisplayName: dfsg76
ThreadText: # Terraform fails on creating network with libvirt provider
  
  (Asked by: username_0 on 2020-06-14)
  
  I wanted to spin up a test environment locally using the description from this stackoverflow answer:
  <https://stackoverflow.com/a/58607900/4397899>
  
  The main.tf looks like
  
  ```
  ################################################################################
  # ENV VARS
  ################################################################################
  
  # https://www.terraform.io/docs/commands/environment-variables.html
  
  variable "VM_COUNT" {
    default = 3
    type = number
  }
  
  variable "VM_USER" {
    default = "developer"
    type = string
  }
  
  variable "VM_HOSTNAME" {
    default = "ci-vm"
    type = string
  }
  
  variable "VM_IMG_URL" {
    default = "https://cloud-images.ubuntu.com/releases/bionic/release/ubuntu-18.04-server-cloudimg-amd64.img"
    type = string
  }
  
  variable "VM_IMG_FORMAT" {
    default = "qcow2"
    type = string
  }
  
  variable "VM_CIDR_RANGE" {
    default = "10.10.10.10/24"
    type = string
  }
  
  ################################################################################
  # PROVIDERS
  ################################################################################
  
  # instance the provider
  provider "libvirt" {
    uri = "qemu:///system"
  }
  
  ################################################################################
  # DATA TEMPLATES
  ################################################################################
  
  # https://www.terraform.io/docs/providers/template/d/file.html
  
  # https://www.terraform.io/docs/providers/template/d/cloudinit_config.html
  data "template_file" "user_data" {
    template = file("${path.module}/cloud_init.cfg")
    vars = {
      VM_USER = var.VM_USER
    }
  }
  
  data "template_file" "network_config" {
    template = file("${path.module}/network_config.cfg")
  }
  
  ################################################################################
  # RESOURCES
  ################################################################################
  
  resource "libvirt_pool" "vm" {
    name = "${var.VM_HOSTNAME}_pool"
    type = "dir"
    path = "/tmp/terraform-provider-libvirt-pool-ubuntu"
  }
  
  # We fetch the latest ubuntu release image from their mirrors
  resource "libvirt_volume" "vm" {
    count  = var.VM_COUNT
    name   = "${var.VM_HOSTNAME}-${count.index}_volume.${var.VM_IMG_FORMAT}"
    pool   = libvirt_pool.vm.name
    source = var.VM_IMG_URL
    format = var.VM_IMG_FORMAT
  }
  
  # Create a public network for the VMs
  resource "libvirt_network" "vm_public_network" {
     name = "${var.VM_HOSTNAME}_network"
     mode = "nat"
     domain = "${var.VM_HOSTNAME}.local"
     addresses = ["${var.VM_CIDR_RANGE}"]
     dhcp {
      enabled = true
     }
     dns {
      enabled = true
     }
  }
  
  # for more info about paramater check this out
  # https://github.com/dmacvicar/terraform-provider-libvirt/blob/master/website/docs/r/cloudinit.html.markdown
  # Use CloudInit to add our ssh-key to the instance
  # you can add also meta_data field
  resource "libvirt_cloudinit_disk" "cloudinit" {
    name           = "${var.VM_HOSTNAME}_cloudinit.iso"
    user_data      = data.template_file.user_data.rendered
    network_config = data.template_file.network_config.rendered
    pool           = libvirt_pool.vm.name
  }
  
  # Create the machine
  resource "libvirt_domain" "vm" {
    count  = var.VM_COUNT
    name   = "${var.VM_HOSTNAME}-${count.index}"
    memory = "1024"
    vcpu   = 1
  
    cloudinit = "${libvirt_cloudinit_disk.cloudinit.id}"
  
    # TODO: Automate the creation of public network
    network_interface {
      network_id = "${libvirt_network.vm_public_network.id}"
      #network_id = "6d8e2494-835d-4baf-a14f-3a5c705febcc"
      #network_name = "vm_docker_network"
      network_name = "${libvirt_network.vm_public_network.name}"
    }
  
    # IMPORTANT
    # Ubuntu can hang is a isa-serial is not present at boot time.
    # If you find your CPU 100% and never is available this is why.
    #
    # This is a known bug on cloud images, since they expect a console
    # we need to pass it:
    # https://bugs.launchpad.net/cloud-images/+bug/1573095
    console {
      type        = "pty"
      target_port = "0"
      target_type = "serial"
    }
  
    console {
      type        = "pty"
      target_type = "virtio"
      target_port = "1"
    }
  
    disk {
      volume_id = "${libvirt_volume.vm[count.index].id}"
    }
  
    graphics {
      type        = "spice"
      listen_type = "address"
      autoport    = true
    }
  }
  
  ################################################################################
  # TERRAFORM CONFIG
  ################################################################################
  
  terraform {
    required_version = ">= 0.12"
  }
  
  ```
  
  The network\_config.cfg looks like this
  
  ```
  version: 2
  ethernets:
    ens3:
       dhcp4: true
  
  ```
  
  Steps to Reproduce Issue
  
  Run
  
  ```
  terraform init
  terraform apply
  
  ```
  
  Then I get the error message:
  
  ```
  Error: Error creating libvirt network: virError(Code=38, Domain=0, Message='error creating bridge interface ci-vm_network-br: Numerical result out of range')
  
  ```
  
  **Tags:** terraform
  
  
  ---
  
  ## 1 answers
  
  ### Answer by username_1 on 2020-11-26. Score: 1
  
  I guess the issue is here:
  
  default = "10.10.10.10/24"
  
  you have defined a network address and not a subnet. Try and change the IP address to a subnet address it should work.
  
  
  ---
  
  