使用cloud-init新建虚拟机后重启系统网络IP地址丢失

cloud-init 是 Linux 平台的⼀个开源⼯具,可以为云平台的 Linux 虚拟机完成⼀系列系统初始化配置。作为⼀个⾮常驻服务,开机启动时执⾏后⽴即退出,不会监听任何端⼝。

环境

  • Red Hat OpenStack
  • cloud-init
  • SmartX

问题

  • cloud-init在新建虚拟机时修改网络配置后引发异常
  • SmartX在使用cloud-init模板部署虚拟机时新增网卡后,创建的虚拟机在配置Ip地址后,重启虚拟机IP地址会被重置为dhcp。
  • RedHat OpenStack相关报错如下:
util.py[DEBUG]: Reading from /sys/class/net/ens3/type (quiet=False)
util.py[DEBUG]: Read 2 bytes from /sys/class/net/ens3/type
util.py[WARNING]: failed stage init
util.py[DEBUG]: failed stage init
Traceback (most recent call last):
File "/usr/lib/python3.6/site-packages/cloudinit/cmd/main.py", line 653, in status_wrapper
ret = functor(name, args)
File "/usr/lib/python3.6/site-packages/cloudinit/cmd/main.py", line 362, in main_init
init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL))
File "/usr/lib/python3.6/site-packages/cloudinit/stages.py", line 681, in apply_network_config
netcfg, src = self._find_networking_config()
File "/usr/lib/python3.6/site-packages/cloudinit/stages.py", line 646, in _find_networking_config
if self.datasource and hasattr(self.datasource, 'network_config'):
File "/usr/lib/python3.6/site-packages/cloudinit/sources/DataSourceConfigDrive.py", line 152, in network_config
self.network_json, known_macs=self.known_macs)
File "/usr/lib/python3.6/site-packages/cloudinit/sources/helpers/openstack.py", line 683, in convert_net_json
raise ValueError("Unable to find a system nic for %s" % d)
ValueError: Unable to find a system nic for {'type': 'physical', 'mtu': 1500, 'subnets': [{'type': 'dhcp4'}], 'mac_address': ''}
atomic_helper.py[DEBUG]: Atomically writing to file /var/lib/cloud/data/status.json (via temporary file /var/lib/cloud/data/tmpm9hc8a2w) - w: [644] 790 bytes/chars
util.py[DEBUG]: Reading from /proc/uptime (quiet=False)
util.py[DEBUG]: Read 13 bytes from /proc/uptime
util.py[DEBUG]: cloud-init mode 'init' took 0.124 seconds

解决方案

如果在firstboot部分之后不使用cloud init服务,解决此问题的方法是禁用并停止cloud init服务。在第一个引导步骤之后,禁用cloud init服务。

# systemctl stop cloud-init
# systemctl disable cloud-init
#systemctl mask cloud-init

原因

Cloudinit通过UserData获得了网络配置,并在firstboot时配置网络以进行设置。虽然第一次引导后不需要服务,但该服务在firstboot之后启用并运行。当Cloudinit检测到新接口时,它会在现有配置中搜索定义的NIC。然后当CloudInit找不到NIC时,它抛出异常。

文章来源:https://www.cnaaa.net,转载请注明出处:https://www.cnaaa.net/archives/6908

(0)
郭靖的头像郭靖
上一篇 2023年1月31日 下午4:36
下一篇 2023年2月2日 下午4:26

相关推荐

  • 在 VMware 中安装 Kali Linux 系统的详细过程

    Kali Linux 是用于学习和练习黑客攻击和渗透测试的Linux发行版的不二之选。 而且,如果你经常捣鼓 Linux 发行版,出于好奇心,你可能已经尝试过它。 警告!本文介绍的内容仅供学习 Kali Linux 的安装,请勿使用 Kali Linux 进行任何非授权的行为。Kali Linux 应该用于在授权的情况下,对授权的目标进行合理的渗透测试,以了…

    2022年6月8日
    1.9K00
  • OpenSSH_9.3p1 升级到 OpenSSH_9.5p1

    文章声明:此文基于实操撰写 生产环境:此文升级是基于9.3p1升级9.5p1ssh -V查看版本是:OpenSSH_9.3p1, OpenSSL 1.1.1t 7 Feb 2023问题关键字:OpenSSH 升级, OpenSSH 更新, OpenSSH 漏洞修复漏洞信息:OpenSSH 命令注入漏洞(CVE-2020-15778)、OpenSSH 安全漏洞…

    2023年12月13日
    1.3K00
  • Linux系统之nethogs命令

    1.简介 NetHogs是一个小型的net top工具,不像大多数工具那样拖慢每个协议或者是每个子网的速度而是依照进程进行带宽分组。 NetHogs不需要依赖载入某个特殊的内核模块。 假如发生了网络堵塞你能够使用NetHogs立即看到哪个PID形成的这种情况。 这样就很容易找出哪个程序突然长时间占用你的带宽。 NetHogs是一个类似于Linux的top指令…

    2023年9月19日
    79800
  • linux之运维性能命令

    在 Linux 系统中,有许多命令和工具可以帮助运维人员监控系统状态、性能以及定位问题。以下是一些常用的运维相关命令: top: 如前所述,实时显示进程的资源占用情况。 htop: 类似于 top,但提供了一个更为用户友好的界面,支持颜色显示和滚动。 vmstat: 报告有关系统进程、内存、分页、块 IO、陷阱和 CPU 活动的信息。 iostat: 用于监…

    2024年7月3日
    1.5K00
  • 数据库迁移报错,提示默认日期不能为‘0000-00-00 00:00:00’

    将服务器的数据同步到本地或备份还原到本地mysql时,出现莫名其妙的报错,可能有以下这些报错:“Data truncated for column ‘字段名‘ at row 1”,集中在时间的默认值。数据源的mysql版本是5.5.30,有些时间字段默认值设置为0000-00-00 00:00:00。目标mysql版本为5.7.17,查资料发现,MySQL …

    2022年12月2日
    1.2K00

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

在线咨询: QQ交谈

邮件:712342017@qq.com

工作时间:周一至周五,8:30-17:30,节假日休息

关注微信