Skip to content

NAT interface have equal IP address on all virtualbox machine #75

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
patsevanton opened this issue Aug 27, 2019 · 9 comments
Open

NAT interface have equal IP address on all virtualbox machine #75

patsevanton opened this issue Aug 27, 2019 · 9 comments

Comments

@patsevanton
Copy link
Contributor

patsevanton commented Aug 27, 2019

Box https://vagrantcloud.com/geerlingguy/boxes/centos7/versions/1.2.16/providers/virtualbox.box

Terraform config

resource "virtualbox_vm" "node" {
  count     = 3
  name      = format("node%02d", count.index + 1)
  image     = "virtualbox.box"
  cpus      = 1
  memory    = "2048 mib"

  network_adapter {
    type = "nat"
  }

  network_adapter {
    type           = "hostonly"
    host_interface = "vboxnet1"
  }

}

terraform show

# virtualbox_vm.node[0]:
resource "virtualbox_vm" "node" {
    cpus   = 1
    id     = "8bf98ea2-8492-45d5-979e-8ad8938bf2c2"
    image  = "virtualbox.box"
    memory = "2.0 gib"
    name   = "node01"
    status = "running"

    network_adapter {
        device                 = "IntelPro1000MTServer"
        ipv4_address           = "10.0.2.15"
        ipv4_address_available = "yes"
        mac_address            = "08002785549C"
        status                 = "up"
        type                   = "nat"
    }
    network_adapter {
        device                 = "IntelPro1000MTServer"
        host_interface         = "vboxnet1"
        ipv4_address           = "192.168.57.3"
        ipv4_address_available = "yes"
        mac_address            = "080027265D28"
        status                 = "up"
        type                   = "hostonly"
    }
}

# virtualbox_vm.node[1]:
resource "virtualbox_vm" "node" {
    cpus   = 1
    id     = "620a7195-4e1b-49be-8295-13739352f4d4"
    image  = "virtualbox.box"
    memory = "2.0 gib"
    name   = "node02"
    status = "running"

    network_adapter {
        device                 = "IntelPro1000MTServer"
        ipv4_address           = "10.0.2.15"
        ipv4_address_available = "yes"
        mac_address            = "08002795B91B"
        status                 = "up"
        type                   = "nat"
    }
    network_adapter {
        device                 = "IntelPro1000MTServer"
        host_interface         = "vboxnet1"
        ipv4_address           = "192.168.57.6"
        ipv4_address_available = "yes"
        mac_address            = "080027F6A8B9"
        status                 = "up"
        type                   = "hostonly"
    }
}

# virtualbox_vm.node[2]:
resource "virtualbox_vm" "node" {
    cpus   = 1
    id     = "ab2e09b6-8993-4445-afd5-467beecca59d"
    image  = "virtualbox.box"
    memory = "2.0 gib"
    name   = "node03"
    status = "running"

    network_adapter {
        device                 = "IntelPro1000MTServer"
        ipv4_address           = "10.0.2.15"
        ipv4_address_available = "yes"
        mac_address            = "08002724A15B"
        status                 = "up"
        type                   = "nat"
    }
    network_adapter {
        device                 = "IntelPro1000MTServer"
        host_interface         = "vboxnet1"
        ipv4_address           = "192.168.57.5"
        ipv4_address_available = "yes"
        mac_address            = "080027F9123D"
        status                 = "up"
        type                   = "hostonly"
    }
}
@patsevanton
Copy link
Contributor Author

node3

[root@node3 ~]# ip a
3: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:24:a1:5b brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s17
       valid_lft 81822sec preferred_lft 81822sec
    inet6 fe80::ffc3:fb7e:5052:c8bd/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

node2

[root@node2 ~]# ip a
3: enp0s17: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 08:00:27:95:b9:1b brd ff:ff:ff:ff:ff:ff
    inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s17
       valid_lft 81806sec preferred_lft 81806sec
    inet6 fe80::9a82:5804:2bcf:571b/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

@patsevanton patsevanton changed the title NAT interface have same IP address on all virtualbox machine NAT interface have equal IP address on all virtualbox machine Aug 27, 2019
@patsevanton
Copy link
Contributor Author

How Add NATNetwork interface?

@ringods
Copy link
Contributor

ringods commented Aug 27, 2019

@patsevanton we know there is still a lot missing. At the moment we only have a vm resource. We should add quite a bit more datasources and resources to this provider to make everything much more workable and configurable.

@patsevanton
Copy link
Contributor Author

@patsevanton
Copy link
Contributor Author

change netTfToVbox func

func netTfToVbox(d *schema.ResourceData) ([]vbox.NIC, error) {
	tfToVboxNetworkType := func(attr string) (vbox.NICNetwork, error) {
		fmt.Println("WARNING: ------------------------ attr")
		fmt.Println(attr)
		switch attr {
		case "bridged":
			return vbox.NICNetBridged, nil
		case "nat":
			return vbox.NICNetNAT, nil
		case "hostonly":
			return vbox.NICNetHostonly, nil
		case "internal":
			return vbox.NICNetInternal, nil
		case "generic":
			return vbox.NICNetGeneric, nil
		default:
			mydata := []byte(netType)
			err := ioutil.WriteFile("tfToVboxNetworkType.txt", mydata, 0777)
			if err != nil {
				fmt.Println(err)
			}
			return ""
		}
	}

But i dont find tfToVboxNetworkType.txt

@patsevanton
Copy link
Contributor Author

patsevanton commented Aug 27, 2019

Different between

		case "hostonly":
			return vbox.NICNetHostonly, nil

and

		case "natnetwork":
			return vbox.NICNetNatNetwork, nil

Output command:

--nic1  --nictype1 82545EM --cableconnected1 on

and

--nic1 hostonly --nictype1 82545EM --cableconnected1 on --hostonlyadapter1 vboxnet0

@patsevanton
Copy link
Contributor Author

I created pull request
terra-farm/go-virtualbox#11

But error is same:

2019-08-27T22:22:52.506+0600 [DEBUG] plugin.terraform-provider-virtualbox: pid-5351-vbm.go:45: executing: VBoxManage modifyvm ansible --firmware bios --bioslogofadein off --bioslogofadeout off --bioslogodisplaytime 0 --biosbootmenu disabled --ostype Linux_64 --cpus 1 --memory 256 --vram 20 --acpi on --ioapic on --rtcuseutc on --cpuhotplug off --pae on --longmode on --hpet off --hwvirtex on --triplefaultreset off --nestedpaging on --largepages on --vtxvpid on --vtxux on --accelerate3d off --boot1 disk --boot2 none --boot3 none --boot4 none --nic1  --nictype1 82545EM --cableconnected1 on
2019-08-27T22:22:52.573+0600 [DEBUG] plugin.terraform-provider-virtualbox: pid-5351-utils.go:12: [ERROR] Setup VM properties: exit status 1
2019/08/27 22:22:52 [DEBUG] virtualbox_vm.ansible[0]: apply errored, but we're indicating that via the Error pointer rather than returning it: [ERROR] Setup VM properties: exit status 1

@patsevanton
Copy link
Contributor Author

Hello!

@ringods can you check code https://github.com/isage/terraform-provider-virtualbox ?
Thanks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants