根据 HyperV 信息在启动期间重新配置系统(网络)

根据 HyperV 信息在启动期间重新配置系统(网络)

我正在运行 HyperV 环境,Ubuntu 14.04 服务器在第一代客户机设置中运行。它运行良好。

我希望能够克隆系统(关闭时),给它一个新名称,并让新系统稍微重新配置一下 - 不同的静态 IP、不同的 LVS 设置、不同的 Apache2 设置等。我通过复制适当的配置文件来实现这一点(即系统有多个副本,它用正确的文件替换 /etc/network/interfaces 等文件)

我在 upstart 中找不到合适的位置来执行此操作。在 local-file-systems 之前执行此操作,文件系统将无法读写。在之后执行此操作(例如在网络启动期间在 if-pre-up.d 中执行此操作)会与系统自己的配置发生冲突(即我在系统开始使用 /etc/network/interfaces 之后替换它)。

让它完全启动并运行脚本并不理想,因为它会在网络上弹出 IP 冲突,可能会影响此克隆的父代。所以我想在启动期间执行此操作。

在移动文件之后,我通过从 if-pre-up.d 重新启动第二次,然后让它完成启动,使它工作了一段时间。但是由于各种原因,这似乎有点不对劲,其中最主要的是它会在 grub(或任何启动屏幕)中停止并需要按 ENTER 键。[我在其他地方发布了一个关于此问题的问题,如果您能帮忙,请在那里回答。]

在 upstart 的序列中是否有合适的位置可以覆盖网络接口文件(以及相关服务文件,如 keepaloved、apache2、haproxy)并让它们正常处理?

答案1

我一直在不断努力并使其发挥作用,尽管结果并不理想。

我输入了一个脚本,并从中if-pre-up.d取出了设备(这是我想要配置的设备)。eth0/etc/interfaces

然后当这个触发时(可能会多次),我手动eth0配置知识产权命令行(例如ip addrip route等等)。我还/etc/resolvconf为 dns 服务器编写了文件。

我在开头添加了一行,通知是否eth0已配置并退出,因此如果它运行多次,我只需执行一次工作。执行命令行配置并省略eth0可防止/etc/interfaces它与的正常配置发生冲突eth0

这很丑陋,但我无法在 upstart 中找到一个合适的点,即在配置本地文件系统和开始网络配置之间。至少在理论上我可以更改相关文件,/etc/init以便插入这样的步骤,但这似乎很脆弱,尤其是在更新期间。

结果是一个可以在 Hyper-V 中运行的自配置客户机,查看其主机名,并配置自身 - IP 地址、其他启动/配置文件等。通过这种方式,我可以将一个副本克隆到多个副本,并获得由简单脚本驱动的各种不同的设置。

这有效......但我肯定会欢迎更好的答案。

相关内容