我正在运行 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 addr
,ip route
等等)。我还/etc/resolvconf
为 dns 服务器编写了文件。
我在开头添加了一行,通知是否eth0
已配置并退出,因此如果它运行多次,我只需执行一次工作。执行命令行配置并省略eth0
可防止/etc/interfaces
它与的正常配置发生冲突eth0
。
这很丑陋,但我无法在 upstart 中找到一个合适的点,即在配置本地文件系统和开始网络配置之间。至少在理论上我可以更改相关文件,/etc/init
以便插入这样的步骤,但这似乎很脆弱,尤其是在更新期间。
结果是一个可以在 Hyper-V 中运行的自配置客户机,查看其主机名,并配置自身 - IP 地址、其他启动/配置文件等。通过这种方式,我可以将一个副本克隆到多个副本,并获得由简单脚本驱动的各种不同的设置。
这有效......但我肯定会欢迎更好的答案。