Я загружаю виртуальные машины cirros вне среды Openstack с помощью libvirt. При загрузке виртуальная машина двадцать раз проверяет наличие метаданных, что увеличивает время загрузки.
cirros-ds 'net' up at 6.14
checking http://169.254.169.254/2009-04-04/instance-id failed 1/20: up 6.18. request failed failed 2/20: up 18.32. request failed failed 3/20: up 30.38. request failed failed 4/20: up 42.44. request failed [snip]
Я использую cirros-0.3.3.
Могу ли я использовать cloud-init или какой-либо другой механизм для отключения поиска метаданных?
Я смог ответить на свой вопрос после нескольких дней исследований. Вы должны передать "ds = nocloud" в качестве параметра ядра виртуальной машине.
Вот как я это сделал.
#!/bin/sh export VM_NAME=cirros$$ IMAGES_BASE=/var/lib/libvirt/images cp $IMAGES_BASE/cirros/cirros-0.3.0-i386-blank.img $IMAGES_BASE/$VM_NAME.img virt-install -r 256 \ -n $VM_NAME \ --vcpus=1 \ --import \ --autostart \ --memballoon virtio \ --network bridge=virbr0 \ --boot kernel=$IMAGES_BASE/cirros/cirros-0.3.0-i386-vmlinuz,initrd=$IMAGES_BASE/cirros/cirros-0.3.0-i386-initrd,kernel_args="console=/dev/ttyS0 ds=nocloud" \ --disk $IMAGES_BASE/$VM_NAME.img \ --noautoconsole
Ядро, initrd и пустой образ содержатся в версиях cirros UEC на странице загрузки.
ОБНОВЛЕНИЕ - Другой способ - отредактировать / etc / cirros-init / config. Измените переменную DATASOURCE_LIST. Этот метод требует обновления образа виртуальной машины, поэтому я предпочитаю использовать метод args ядра. Файл / etc / cirros-init / config существует в cirros-0.3.3, но не в cirros-0.3.0. Другие версии не проверял.
Один из вариантов - запустить виртуальную машину -> Установить DATASOURCE_LIST = "nocloud" в / etc / cirros-init / config -> Остановить виртуальную машину и использовать новый файл образа в качестве ссылки для будущих виртуальных машин, которые будут развернуты.
Вас может заинтересовать: https://github.com/eprasad/virt-cirros . Дружественный к платформе виртуализации образ cirros