[ovirt-devel] oVirt Cloud-init
Marc Young
3vilpenguin at gmail.com
Mon Feb 20 16:01:14 UTC 2017
I started poking around in the cloud-init code. it's running v0.7.5 and the
network code (forked) for rhel.py is here:
https://github.com/number5/cloud-init/blob/0.7.5/cloudinit/distros/rhel.py#L87
I used journalctl /usr/bin/cloud-init to get debug output and got this:
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] rhel.py[DEBUG]:
Translated ubuntu style network settings auto eth0
iface eth0 inet static
address 192.168.2.120
netmask 255.255.255.0
gateway 192.168.2.1
dns-nameservers 192.168.2.1
dns-search test.local
into {'eth0': {'dns-search':
['test.local'], 'auto': True, 'dns-nameservers': ['192.168.2.1'],
'netmask': '255.255.255.0', 'bootproto': 'static', 'address':
'192.168.2.120', 'gateway': '192.168.2.1'}}
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Reading from /etc/sysconfig/network-scripts/ifcfg-eth0 (quiet=False)
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]: Read
17 bytes from /etc/sysconfig/network-scripts/ifcfg-eth0
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Writing to /etc/sysconfig/network-scripts/ifcfg-eth0 - wb: [420] 120 bytes
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Restoring selinux mode for /etc/sysconfig/network-scripts/ifcfg-eth0
(recursive=False)
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Restoring selinux mode for /etc/sysconfig/network-scripts/ifcfg-eth0
(recursive=False)
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Reading from /etc/resolv.conf (quiet=False)
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]: Read
86 bytes from /etc/resolv.conf
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Writing to /etc/resolv.conf - wb: [420] 109 bytes
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Restoring selinux mode for /etc/resolv.conf (recursive=False)
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Restoring selinux mode for /etc/resolv.conf (recursive=False)
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Reading from /etc/sysconfig/network (quiet=False)
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]: Read
53 bytes from /etc/sysconfig/network
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Writing to /etc/sysconfig/network - wb: [420] 68 bytes
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Restoring selinux mode for /etc/sysconfig/network (recursive=False)
Feb 19 19:39:03 vagrant cloud-init[647]: [CLOUDINIT] util.py[DEBUG]:
Restoring selinux mode for /etc/sysconfig/network (recursive=False)
It definitely feels like something related to cloud-init or my setup . I'll
keep looking, perhaps the write to /etc/resolv.conf is failing silently. I
can verify that any changes made to /etc/resolv.conf survive a service
network restart so i'm not sure if it's not happening at all or what, but i
don't think it's being overridden.
On Mon, Feb 20, 2017 at 9:36 AM, Marc Young <3vilpenguin at gmail.com> wrote:
> Still no change...
>
>
> myoung dev ~ repos github vagrant-ovirt4 feature/gh65 ✎
> $ vagrant up
> You appear to be running Vagrant outside of the official installers.
> Note that the installers are what ensure that Vagrant has all required
> dependencies, and Vagrant assumes that these dependencies exist. By
> running outside of the installer environment, Vagrant may not function
> properly. To remove this warning, install Vagrant using one of the
> official packages from vagrantup.com.
>
> Bringing machine 'default' up with 'ovirt4' provider...
> ==> default: Creating VM with the following settings...
> ==> default: -- Name: testing
> ==> default: -- Cluster: Default
> ==> default: -- Template: vagrant-centos7
> ==> default: -- Console Type: vnc
> ==> default: -- Memory:
> ==> default: ---- Memory: 2048 MB
> ==> default: ---- Maximum: 2048 MB
> ==> default: ---- Guaranteed: 2048 MB
> ==> default: -- Cpu:
> ==> default: ---- Cores: 2
> ==> default: ---- Sockets: 1
> ==> default: ---- Threads: 1
> ==> default: -- Cloud-Init: false
> ==> default: Waiting for VM to become "ready" to start...
> ==> default: Starting VM.
>
> From: /home/myoung/repos/github/vagrant-ovirt4/lib/vagrant-ovirt4/action/start_vm.rb
> @ line 79 VagrantPlugins::OVirtProvider::Action::StartVM#call:
>
> 74: vm_configuration[:initialization][:dns_search] =
> iface_options[:dns_search] unless iface_options[:dns_search].nil?
> 75:
> 76: require 'pry'
> 77: binding.pry
> 78:
> => 79: machine.start(
> 80: use_cloud_init: true,
> 81: vm: vm_configuration
> 82: )
> 83:
> 84: @app.call(env)
>
> [1] pry(#<VagrantPlugins::OVirtProvider::Action::StartVM>)>
> vm_configuration
> => {:initialization=>
> {:host_name=>"testing",
> :nic_configurations=>[{:name=>"eth0", :on_boot=>true,
> :boot_protocol=>"static", :ip=>{:version=>"v4", :address=>"192.168.2.120",
> :gateway=>"192.168.2.1", :netmask=>"255.255.255.0"}}],
> :custom_script=>nil,
> :dns_servers=>"192.168.2.1",
> :dns_search=>"test.local"}}
> [2] pry(#<VagrantPlugins::OVirtProvider::Action::StartVM>)>
> ==> default: Waiting for VM to get an IP address...
> ==> default: Machine is booted and ready for use!
> ==> default: Rsyncing folder: /home/myoung/repos/github/vagrant-ovirt4/
> => /vagrant
> ==> default: Setting hostname...
> default:
> default: Vagrant insecure key detected. Vagrant will automatically
> replace
> default: this with a newly generated keypair for better security.
> default:
> default: Inserting generated public key within guest...
> default: Removing insecure key from the guest if it's present...
> default: Key inserted! Disconnecting and reconnecting using new SSH
> key...
> myoung dev ~ repos github vagrant-ovirt4 feature/gh65 ✎
> $ vagrant ssh
> You appear to be running Vagrant outside of the official installers.
> Note that the installers are what ensure that Vagrant has all required
> dependencies, and Vagrant assumes that these dependencies exist. By
> running outside of the installer environment, Vagrant may not function
> properly. To remove this warning, install Vagrant using one of the
> official packages from vagrantup.com.
>
> Last login: Wed Feb 15 00:23:35 2017 from 192.168.2.32
> [vagrant at testing ~]$ cat /etc/resolv.conf
> # Generated by NetworkManager
> search localdomain
> [vagrant at testing ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
> NM_CONTROLLED=no
> NETMASK=255.255.255.0
> BOOTPROTO=static
> DEVICE=eth0
> IPADDR=192.168.2.120
> GATEWAY=192.168.2.1
> ONBOOT=yes
>
>
>
> If i check out the floppy attached to that VM:
>
> [myoung at ovirt ~]$ sudo ps -ef | grep qemu-kvm | grep test
> [sudo] password for myoung:
> qemu 24311 1 87 01:38 ? 00:00:18 .....
> [myoung at ovirt ~]$ sudo cp /var/run/vdsm/payload/9964609e-8d85-4a5c-9416-
> 8e11b2fd5883.d0d0739973bfb4b6eb67d1f4974c3e0c.img .
> [myoung at ovirt ~]$ mkdir a; sudo mount -o loop,ro 9964609e-8d85-4a5c-9416-
> 8e11b2fd5883.d0d0739973bfb4b6eb67d1f4974c3e0c.img a
> [myoung at ovirt ~]$ sudo cat $(sudo find a -name 0000 -type f)
> auto eth0
> iface eth0 inet static
> address 192.168.2.120
> netmask 255.255.255.0
> gateway 192.168.2.1
> dns-nameservers 192.168.2.1
> dns-search test.local
> [myoung at ovirt ~]$ sudo umount a
>
>
>
> What's the next step? Is there a way to verify on the upstream that
> dns-search and dns-nameservers actually populate the ifcfg-eth0 file ?
>
>
>
> On Sat, Feb 18, 2017 at 6:58 AM, Juan Hernández <jhernand at redhat.com>
> wrote:
>
>> On 02/17/2017 08:11 PM, Marc Young wrote:
>> > Per the script, i'll change that, probably just wasnt paying attention
>> > to where i ran chkconfig
>> >
>> > Per cloud-init YAML, not sure. It was in a previous reply so i gave it a
>> > shot. But i can't find that usage anywhere either so i gave up on it.
>> >
>> > Per troubleshooting:
>> >
>> > Spinning up a VM with dns_servers and dns_search:
>> >
>> > 66: vm_configuration[:initialization][:dns_servers] =
>> > iface_options[:dns_servers] unless iface_options[:dns_servers].nil?
>> > 67: vm_configuration[:initialization][:dns_search] =
>> > iface_options[:dns_search] unless iface_options[:dns_search].nil?
>> > 68: require 'pry'
>> > 69: binding.pry
>> > 70:
>> > => 71: machine.start(
>> > 72: use_cloud_init: true,
>> > 73: vm: vm_configuration
>> > 74: )
>> > 75:
>> > 76: @app.call(env)
>> >
>> > [1] pry(#<VagrantPlugins::OVirtProvider::Action::StartVM>)>
>> > vm_configuration
>> > => {:initialization=>
>> > {:host_name=>"test",
>> > :nic_configurations=>[{:name=>"eth0", :on_boot=>true,
>> > :boot_protocol=>"static", :ip=>{:version=>"v4",
>> > :address=>"192.168.2.200", :gateway=>"192.168.2.1",
>> > :netmask=>"255.255.255.0"}}],
>> > :custom_script=>
>> > "manage-resolv-conf: true\n\nresolv_conf:\n nameservers:
>> > ['8.8.4.4', '8.8.8.8']\n searchdomains:\n - foo.example.com
>> > <http://foo.example.com>\n - bar.example.com
>> > <http://bar.example.com>\n domain: example.com
>> > <http://example.com>\n options:\n rotate: true\n timeout:
>> 1\n",
>> > :dns_servers=>"192.168.2.1",
>> > :dns_search=>"test.local"}}
>> > [2] pry(#<VagrantPlugins::OVirtProvider::Action::StartVM>)>
>> > ==> default: Waiting for VM to get an IP address...
>> > ==> default: Machine is booted and ready for use!
>> > ==> default: Rsyncing folder:
>> > /home/myoung/repos/github/vagrant-ovirt4/ => /vagrant
>> > ==> default: Setting hostname...
>> > default:
>> > default: Vagrant insecure key detected. Vagrant will
>> > automatically replace
>> > default: this with a newly generated keypair for better
>> security.
>> > default:
>> > default: Inserting generated public key within guest...
>> > default: Removing insecure key from the guest if it's present...
>> > default: Key inserted! Disconnecting and reconnecting using new
>> > SSH key...
>> >
>> >
>> > now ill ssh in and look around
>> >
>> > myoung dev ~ repos github vagrant-ovirt4
>> > feature/gh65 ✎ 5❓ 1 $ vagrant ssh
>> > You appear to be running Vagrant outside of the official installers.
>> > Note that the installers are what ensure that Vagrant has all
>> required
>> > dependencies, and Vagrant assumes that these dependencies exist. By
>> > running outside of the installer environment, Vagrant may not
>> function
>> > properly. To remove this warning, install Vagrant using one of the
>> > official packages from vagrantup.com <http://vagrantup.com>.
>> >
>> > Last login: Thu Feb 16 23:04:00 2017 from 192.168.2.198
>> > [vagrant at test ~]$ sudo cat /var/lib/cloud/instance/user-data.txt
>> > #cloud-config
>> > output:
>> > all: '>> /var/log/cloud-init-output.log'
>> > disable_root: 0
>> > runcmd:
>> > - 'sed -i ''/^datasource_list: /d'' /etc/cloud/cloud.cfg; echo
>> > ''datasource_list:
>> > ["NoCloud", "ConfigDrive"]'' >> /etc/cloud/cloud.cfg'
>> > ssh_pwauth: true
>> > chpasswd:
>> > expire: false
>> > user: root
>> > manage-resolv-conf: true
>> >
>> > resolv_conf:
>> > nameservers: ['8.8.4.4', '8.8.8.8']
>> > searchdomains:
>> > - foo.example.com <http://foo.example.com>
>> > - bar.example.com <http://bar.example.com>
>> > domain: example.com <http://example.com>
>> > options:
>> > rotate: true
>> > timeout: 1
>>
>> Apparently you are passing in the 'custom_script' some DNS
>> configuration, which may conflict with the DNS configuration that you
>> are passing in the 'dns_servers' and 'dns_search' options. It could be
>> that cloud-init ignores one of them. I'd suggest that you try to remove
>> completely the 'custom_script' parameter.
>>
>> > [vagrant at test ~]$ sudo cat /etc/resolv.conf
>> > # Generated by NetworkManager
>> > search localdomain
>> >
>> > [vagrant at test ~]$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
>> > NM_CONTROLLED=no
>> > NETMASK=255.255.255.0
>> > BOOTPROTO=static
>> > DEVICE=eth0
>> > IPADDR=192.168.2.200
>> > GATEWAY=192.168.2.1
>> > ONBOOT=yes
>> >
>> > [vagrant at test ~]$ sudo cat /var/log/cloud-init* | grep -i dns
>> > [vagrant at test ~]$ sudo cat /var/log/cloud-init* | grep -i local
>> > Feb 14 23:16:45 vagrant cloud-init: Cloud-init v. 0.7.5 running
>> > 'init-local' at Wed, 15 Feb 2017 05:16:45 +0000. Up 11.00 seconds.
>> > Feb 16 23:03:35 test cloud-init: Cloud-init v. 0.7.5 running
>> > 'init-local' at Fri, 17 Feb 2017 05:03:35 +0000. Up 5.23 seconds.
>> > Cloud-init v. 0.7.5 running 'init-local' at Thu, 09 Feb 2017
>> > 03:45:01 +0000. Up 1310.61 seconds.
>> > Cloud-init v. 0.7.5 running 'init-local' at Wed, 15 Feb 2017
>> > 05:16:45 +0000. Up 11.00 seconds.
>> > Cloud-init v. 0.7.5 running 'init-local' at Fri, 17 Feb 2017
>> > 05:03:35 +0000. Up 5.23 seconds.
>> > Cloud-init v. 0.7.5 finished at Fri, 17 Feb 2017 05:03:45 +0000.
>> > Datasource DataSourceConfigDrive [local,ver=2][source=/dev/sr1].
>> Up
>> > 15.37 seconds
>> >
>> >
>> >
>> > On the vm host running that VM:
>> >
>> >
>> > [myoung at ovirt ~]$ sudo ps -ef | grep qemu-kvm | grep test
>> > qemu 12456 1 9 05:03 ? 00:00:19
>> > /usr/libexec/qemu-kvm -name ...snipped
>> > [myoung at ovirt ~]$ sudo cp
>> > /var/run/vdsm/payload/c65751c3-431d-44e4-836c-963b81b1f846.
>> 20fc2db0517e8c06579d7719d8f3fb35.img
>> > .
>> > [myoung at ovirt ~]$ sudo mount -o loop,ro
>> > c65751c3-431d-44e4-836c-963b81b1f846.20fc2db0517e8c06579d77
>> 19d8f3fb35.img
>> > /mnt
>> > [myoung at ovirt ~]$ find /mnt -type f
>> > find: ‘/mnt’: Permission denied
>> > [myoung at ovirt ~]$ sudo find /mnt -type f
>> > /mnt/openstack/content/0000
>> > /mnt/openstack/latest/meta_data.json
>> > /mnt/openstack/latest/user_data
>> > [myoung at ovirt ~]$ sudo cat /mnt/openstack/content/0000
>> > auto eth0
>> > iface eth0 inet static
>> > address 192.168.2.200
>> > netmask 255.255.255.0
>> > gateway 192.168.2.1
>> > dns-nameservers 192.168.2.1
>> > dns-search test.local
>> > [myoung at ovirt ~]$ sudo umount
>> > c65751c3-431d-44e4-836c-963b81b1f846.20fc2db0517e8c06579d77
>> 19d8f3fb35.img
>> >
>> > Cloud-init definitely isn't working right away with resolv.conf, but I'm
>> > definitely passing it correctly to the API, it shows up on the floppy as
>> > you described but it's not making its way to
>> > /etc/sysconfig/network-scripts/ifcfg-eth0 even though the other
>> settings
>> > for sure are (such as address, netmask,)
>> >
>> > If i add that information to /etc/sysconfig/network-scripts/ifcfg-eth0
>> > and bounce network it all works:
>> >
>> > [vagrant at test ~]$ ping -c 3 www.google.com <http://www.google.com>
>> > ping: www.google.com <http://www.google.com>: Name or service not
>> known
>> > [vagrant at test ~]$ echo $'DNS1=192.168.2.113\nDNS2=192.168.2.1' |
>> > sudo tee -a /etc/sysconfig/network-scripts/ifcfg-eth0 >/dev/null
>> > [vagrant at test ~]$ ping -c 3 www.google.com <http://www.google.com>
>> > ping: www.google.com <http://www.google.com>: Name or service not
>> known
>> > [vagrant at test ~]$ sudo service network restart
>> > Restarting network (via systemctl): [ OK ]
>> > [vagrant at test ~]$ ping -c 3 www.google.com <http://www.google.com>
>> > PING www.google.com <http://www.google.com> (216.58.217.4) 56(84)
>> > bytes of data.
>> > 64 bytes from den03s09-in-f4.1e100.net
>> > <http://den03s09-in-f4.1e100.net> (216.58.217.4): icmp_seq=1 ttl=54
>> > time=55.8 ms
>> > 64 bytes from den03s09-in-f4.1e100.net
>> > <http://den03s09-in-f4.1e100.net> (216.58.217.4): icmp_seq=2 ttl=54
>> > time=43.9 ms
>> > ^C
>> > --- www.google.com <http://www.google.com> ping statistics ---
>> > 2 packets transmitted, 2 received, 0% packet loss, time 1001ms
>> > rtt min/avg/max/mdev = 43.939/49.916/55.894/5.981 ms
>> > [vagrant at test ~]$ sudo cat /etc/resolv.conf
>> > # Generated by NetworkManager
>> > search localdomain
>> > nameserver 192.168.2.113
>> > nameserver 192.168.2.1
>> >
>> >
>> >
>> >
>> > On Fri, Feb 17, 2017 at 2:21 AM, Juan Hernández <jhernand at redhat.com
>> > <mailto:jhernand at redhat.com>> wrote:
>> >
>> > On 02/17/2017 06:00 AM, Marc Young wrote:
>> > > I'm apparently really bad at email, I replied only to Shahar, not
>> the
>> > > whole thread.
>> > >
>> > > Vinzenz your email slipped first, so to answer your question:
>> > >
>> > > It's the latest Centos 7 with these installed:
>> > >
>> > > cloud-init-0.7.5-10.el7.centos.1
>> > > kernel-3.10.0-514 <tel:3.10.0-514> <tel:3.10.0-514
>> > <tel:3.10.0-514>>.el7
>> > > ovirt-guest-agent-common-1.0.13-1.20161220085008.git165fff1.
>> el7.centos
>> > >
>> > > The setup script I use to create a template is here:
>> > > https://github.com/myoung34/vagrant-ovirt4/blob/master/tools
>> /prepare_redhat_for_box.sh
>> > <https://github.com/myoung34/vagrant-ovirt4/blob/master/too
>> ls/prepare_redhat_for_box.sh>
>> > >
>> > <https://github.com/myoung34/vagrant-ovirt4/blob/master/too
>> ls/prepare_redhat_for_box.sh
>> > <https://github.com/myoung34/vagrant-ovirt4/blob/master/too
>> ls/prepare_redhat_for_box.sh>>
>> > >
>> >
>> > In that script you run "chkconfig cloud-init on" *before*
>> installing the
>> > cloud-init package. That is irrelevant, as the cloud-init services
>> are
>> > enabled by default when the package is installed. But worth
>> changing.
>> >
>> > > The engine-host is oVirt Engine Version: 4.1.0.4-1.el7.centos
>> > > The ruby SDK i'm working with is 4.1.2
>> > >
>> > > Halfway through I realized that it's actually supported in the
>> API:
>> > >
>> > > custom_script String
>> > > dns_search String
>> > > dns_servers String
>> > >
>> > >
>> > > It also shows usage here:
>> > >
>> > https://github.com/oVirt/ovirt-engine-sdk-ruby/blob/master/
>> sdk/examples/start_vm_with_cloud_init.rb
>> > <https://github.com/oVirt/ovirt-engine-sdk-ruby/blob/master
>> /sdk/examples/start_vm_with_cloud_init.rb>
>> > >
>> > <https://github.com/oVirt/ovirt-engine-sdk-ruby/blob/master
>> /sdk/examples/start_vm_with_cloud_init.rb
>> > <https://github.com/oVirt/ovirt-engine-sdk-ruby/blob/master
>> /sdk/examples/start_vm_with_cloud_init.rb>>
>> > >
>> > > Here's some verification:
>> > >
>> > > 66:
>> > vm_configuration[:initialization][:dns_servers] =
>> > > iface_options[:dns_servers] unless
>> > iface_options[:dns_servers].nil?
>> > > 67: vm_configuration[:initialization][:dns_search]
>> =
>> > > iface_options[:dns_search] unless
>> iface_options[:dns_search].nil?
>> > > 68: require 'pry'
>> > > 69: binding.pry
>> > > 70:
>> > > => 71: machine.start(
>> > > 72: use_cloud_init: true,
>> > > 73: vm: vm_configuration
>> > > 74: )
>> > > 75:
>> > > 76: @app.call(env)
>> > >
>> > > [1] pry(#<VagrantPlugins::OVirtProvider::Action::StartVM>)>
>> > > vm_configuration
>> > > => {:initialization=>
>> > > {:host_name=>"test",
>> > > :nic_configurations=>[{:name=>"eth0", :on_boot=>true,
>> > > :boot_protocol=>"static", :ip=>{:version=>"v4",
>> > > :address=>"192.168.2.200", :gateway=>"192.168.2.1",
>> > > :netmask=>"255.255.255.0"}}],
>> > > :custom_script=>nil,
>> > > :dns_servers=>"192.168.2.1",
>> > > :dns_search=>"test.local"}}
>> > >
>> > >
>> > > But it didn't do anything:
>> > >
>> > > [vagrant at test ~]$ cat /etc/resolv.conf
>> > > # Generated by NetworkManager
>> > > search localdomain
>> > >
>> > > [vagrant at test ~]$ cat /etc/sysconfig/network-scripts
>> /ifcfg-eth0
>> > > NM_CONTROLLED=no
>> > > NETMASK=255.255.255.0
>> > > BOOTPROTO=static
>> > > DEVICE=eth0
>> > > IPADDR=192.168.2.200
>> > > GATEWAY=192.168.2.1
>> > > ONBOOT=yes
>> > >
>> > >
>> > > The same is also true using cloud_init:
>> > >
>> > > ovirt.cloud_init =<<EOF
>> > > write_files:
>> > > - content: |
>> > > wat
>> > > path: /tmp/something.txt
>> > > permissions: '0644'
>> > > network-interfaces: |
>> > > auto eth0
>> > > iface eth0 inet static
>> > > address 192.168.2.201
>> > > network 192.168.2.0
>> > > netmask 255.255.255.0
>> > > gateway 192.168.2.1
>> > > dns-nameservers 192.168.2.113 192.168.2.1
>> > > EOF
>> > >
>> >
>> > Is this ^ supposed to work in cloud-init? I didn't find it in the
>> > documentation. I thought that the only way to provide network
>> interface
>> > configuration is via the 'openstack/content/whatever' file within
>> the
>> > generated floppy.
>> >
>> > >
>> > > and inspection:
>> > >
>> > > 66:
>> > vm_configuration[:initialization][:dns_servers] =
>> > > iface_options[:dns_servers] unless
>> > iface_options[:dns_servers].nil?
>> > > 67: vm_configuration[:initialization][:dns_search]
>> =
>> > > iface_options[:dns_search] unless
>> iface_options[:dns_search].nil?
>> > > 68: require 'pry'
>> > > 69: binding.pry
>> > > 70:
>> > > => 71: machine.start(
>> > > 72: use_cloud_init: true,
>> > > 73: vm: vm_configuration
>> > > 74: )
>> > > 75:
>> > > 76: @app.call(env)
>> > > [1] pry(#<VagrantPlugins::OVirtProvider::Action::StartVM>)>
>> > > vm_configuration
>> > > => {:initialization=>
>> > > {:host_name=>"test",
>> > > :nic_configurations=>[{:name=>"eth0", :on_boot=>true,
>> > > :boot_protocol=>"static", :ip=>{:version=>"v4",
>> > > :address=>"192.168.2.200", :gateway=>"192.168.2.1",
>> > > :netmask=>"255.255.255.0"}}],
>> > > :custom_script=>
>> > > "write_files:\n - content: |\n wat\n path:
>> > > /tmp/something.txt\n permissions:
>> > '0644'\nnetwork-interfaces: |\n
>> > > auto eth0\n iface eth0 inet static\n address
>> 192.168.2.201\n
>> > > network 192.168.2.0\n netmask 255.255.255.0\n gateway
>> > > 192.168.2.1\n dns-nameservers 192.168.2.113 192.168.2.1\n",
>> > > :dns_servers=>"192.168.2.1",
>> > > :dns_search=>"test.local"}}
>> > >
>> > >
>> > > And here's my debugging after it comes up:
>> > >
>> > > [vagrant at test ~]$ cat /etc/resolv.conf
>> > > # Generated by NetworkManager
>> > > search localdomain
>> > > [vagrant at test ~]$ cat /etc/sysconfig/network-scripts
>> /ifcfg-eth0
>> > > NM_CONTROLLED=no
>> > > NETMASK=255.255.255.0
>> > > BOOTPROTO=static
>> > > DEVICE=eth0
>> > > IPADDR=192.168.2.200
>> > > GATEWAY=192.168.2.1
>> > > ONBOOT=yes
>> > > [vagrant at test ~]$ cat /tmp/something.txt
>> > > wat
>> > > [vagrant at test ~]$ ping -c 3 www.google.com <
>> http://www.google.com>
>> > > <http://www.google.com/>ping: www.google.com
>> > <http://www.google.com>
>> > > <http://www.google.com/>: Name or service not known
>> > > [vagrant at test ~]$ echo $'nameserver 192.168.2.113\nnameserver
>> > > 192.168.2.1' | sudo tee -a /etc/resolv.conf >/dev/null
>> > > [vagrant at test ~]$ ping -c 3 www.google.com <
>> http://www.google.com>
>> > > <http://www.google.com/>PING www.google.com
>> > <http://www.google.com>
>> > > <http://www.google.com/> (216.58.217.4) 56(84) bytes of data.
>> > > 64 bytes from den03s09-in-f4.1e100.net
>> > <http://den03s09-in-f4.1e100.net>
>> > > <http://den03s09-in-f4.1e100.net/
>> > <http://den03s09-in-f4.1e100.net/>> (216.58.217.4): icmp_seq=1
>> > > ttl=54 time=47.5 ms
>> > > 64 bytes from den03s09-in-f4.1e100.net <
>> http://den03s09-in-f4.1e100.net>
>> > > <http://den03s09-in-f4.1e100.net/
>> > <http://den03s09-in-f4.1e100.net/>> (216.58.217.4): icmp_seq=2
>> > > ttl=54 time=46.9 ms
>> > > 64 bytes from den03s09-in-f4.1e100.net <
>> http://den03s09-in-f4.1e100.net>
>> > > <http://den03s09-in-f4.1e100.net/
>> > <http://den03s09-in-f4.1e100.net/>> (216.58.217.4): icmp_seq=3
>> > > ttl=54 time=44.3 ms
>> > > --- www.google.com <http://www.google.com>
>> > <http://www.google.com/> ping statistics ---
>> > > 3 packets transmitted, 3 received, 0% packet loss, time 2002ms
>> > > rtt min/avg/max/mdev = 44.385/46.307/47.555/1.390 ms
>> > >
>> >
>> > Not sure if you did that already, but is very useful to check the
>> > content of the floppy that the oVirt engine creates and attaches to
>> the
>> > virtual machine. To do so run the virtual machine, then go to the
>> > hypervisor where it is running and locate the corresponding
>> 'qemu-kvm'
>> > process:
>> >
>> > # ps -ef | grep qemu-kvm | grep myvm
>> >
>> > That will have a very long command line, and should have a 'payload'
>> > option that points to the generated floppy, something like this:
>> >
>> > -drive file=/var/run/vdsm/payload/ae3a9cd4-....img
>> >
>> > Copy that file somewhere, and mount it:
>> >
>> > # mount -o loop,ro that_file.img /mnt
>> >
>> > Then explore the content:
>> >
>> > # find /mnt -type f
>> > /mnt/openstack/content/0000
>> > /mnt/openstack/latest/meta_data.json
>> > /mnt/openstack/latest/user_data
>> >
>> > The 'openstack/content/0000' file should contain your network
>> > configuration. Is it what you expected?
>> >
>> > The 'openstack/latest/user_data' file should contain the cloud-init
>> > ocnfiguration generated by oVirt, which your custom script appended.
>> > Does it look correct?
>> >
>> > (Remember to "umount /mnt" when done.)
>> >
>> >
>> >
>> >
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ovirt.org/pipermail/devel/attachments/20170220/41778ab4/attachment-0001.html>
More information about the Devel
mailing list