如何使用 vboxmange 工具修复 VirtualBox redhat-7 eth0 ONBOOT=no connectivity 问题?
How to fix VirtualBox redhat-7 eth0 ONBOOT=no connectivity issue with vboxmange tools?
我正在使用下面附带的模板创建带有打包器的 virtualbox redhat box。一切都很好,除了当创建主机并重新启动时,eth0 网络适配器不会启动,因为它是在 /etc/sysconfig/network-scripts 中使用 ONBOOT=no 创建的。但是,如果我打开框的 UI 并手动触发 ifup eth0,它会正常启动,ssh 变得可用并且该过程按预期完成。但是,我需要在 jenkins 管道中使用它,所以没有人可以手动启动网络接口的选项。问题是,是否有任何方法可以使用 virtualbox 管理命令将网络适配器的 ONBOOT 选项更改为 yes,或者以某种方式触发 ifup eth0 命令。两种选择都可能解决问题。
{
"variables": {
"build_base": ".",
"isref_machine":"create-ova-caf",
"build_name":"virtual-box-jenkins",
"output_name":"packer-virtual-box",
"disk_size":"40000",
"ram":"1024",
"disk_adapter":"ide"
},
"builders":[
{
"name": "{{user `build_name`}}",
"type": "virtualbox-iso",
"guest_os_type": "Other_64",
"iso_url": "rhelis74_1710051533.iso",
"iso_checksum": "",
"iso_checksum_type": "none",
"hard_drive_interface":"{{user `disk_adapter`}}",
"ssh_username": "root",
"ssh_password": "Secret1.0",
"shutdown_command": "shutdown -P now",
"guest_additions_mode":"disable",
"boot_wait": "3s",
"boot_command": [ "auto<enter>"],
"ssh_timeout": "40m",
"headless":
"true",
"vm_name": "{{user `output_name`}}",
"disk_size": "{{user `disk_size`}}",
"output_directory":"{{user `build_base`}}/output-{{build_name}}",
"format": "ovf",
"vrdp_bind_address": "0.0.0.0",
"vboxmanage": [
["modifyvm", "{{.Name}}","--nictype1","virtio"],
["modifyvm", "{{.Name}}","--memory","{{ user `ram`}}"]
],
"skip_export":true,
"keep_registered": true
}
],
"provisioners": [
{
"type":"shell",
"inline": ["ls"]
}
]
}
要将网络接口启动设置更改为 onboot=yes,我们需要创建一个 anaconda kickstart 脚本或从现有机器复制一个并更改其中的配置并将其作为
传递
"boot_command": [ "<esc><wait>",
"vmlinuz initrd=initrd.img net.ifnames=0 biosdevname=0 ",
"ks=hd:fd0:/anaconda-ks.cfg",
"<enter>"
],
并在 anaconda 文件中
network --bootproto=dhcp --device=eth0 --onboot=on --ipv6=auto --activate
我正在使用下面附带的模板创建带有打包器的 virtualbox redhat box。一切都很好,除了当创建主机并重新启动时,eth0 网络适配器不会启动,因为它是在 /etc/sysconfig/network-scripts 中使用 ONBOOT=no 创建的。但是,如果我打开框的 UI 并手动触发 ifup eth0,它会正常启动,ssh 变得可用并且该过程按预期完成。但是,我需要在 jenkins 管道中使用它,所以没有人可以手动启动网络接口的选项。问题是,是否有任何方法可以使用 virtualbox 管理命令将网络适配器的 ONBOOT 选项更改为 yes,或者以某种方式触发 ifup eth0 命令。两种选择都可能解决问题。
{
"variables": {
"build_base": ".",
"isref_machine":"create-ova-caf",
"build_name":"virtual-box-jenkins",
"output_name":"packer-virtual-box",
"disk_size":"40000",
"ram":"1024",
"disk_adapter":"ide"
},
"builders":[
{
"name": "{{user `build_name`}}",
"type": "virtualbox-iso",
"guest_os_type": "Other_64",
"iso_url": "rhelis74_1710051533.iso",
"iso_checksum": "",
"iso_checksum_type": "none",
"hard_drive_interface":"{{user `disk_adapter`}}",
"ssh_username": "root",
"ssh_password": "Secret1.0",
"shutdown_command": "shutdown -P now",
"guest_additions_mode":"disable",
"boot_wait": "3s",
"boot_command": [ "auto<enter>"],
"ssh_timeout": "40m",
"headless":
"true",
"vm_name": "{{user `output_name`}}",
"disk_size": "{{user `disk_size`}}",
"output_directory":"{{user `build_base`}}/output-{{build_name}}",
"format": "ovf",
"vrdp_bind_address": "0.0.0.0",
"vboxmanage": [
["modifyvm", "{{.Name}}","--nictype1","virtio"],
["modifyvm", "{{.Name}}","--memory","{{ user `ram`}}"]
],
"skip_export":true,
"keep_registered": true
}
],
"provisioners": [
{
"type":"shell",
"inline": ["ls"]
}
]
}
要将网络接口启动设置更改为 onboot=yes,我们需要创建一个 anaconda kickstart 脚本或从现有机器复制一个并更改其中的配置并将其作为
传递 "boot_command": [ "<esc><wait>",
"vmlinuz initrd=initrd.img net.ifnames=0 biosdevname=0 ",
"ks=hd:fd0:/anaconda-ks.cfg",
"<enter>"
],
并在 anaconda 文件中
network --bootproto=dhcp --device=eth0 --onboot=on --ipv6=auto --activate