XenServer:在引导之前编辑克隆configuration

克隆一个基本的图像时,我需要重新configuration基本设置。 重新生成ssh主机密钥,更改静态IP分配,设置主机名等。

由于networking设置,DHCP不是一个选项。 由于我无法在外部提供IP,所以或多或less地排除使用预定义密钥或运行启动脚本进行SSH连接。

我最想在Dom0上安装新机器的文件系统,但是lvm卷却被导出,并且导入它们的方式看起来很糟糕,因此Dom0机器可以看到它们。

在引导之前更改克隆虚拟机中的文件的最佳build议是什么? 必须是非交互式的,我要猜测通过xe console脚本访问的门是行不通的。

你应该做一些部署系统(例如Open Nebula) – 创build一个由个性化数据组成的小型驱动器。

configuration你的映像,以期望第二个驱动器在那里(也许有一个已知的UUID或文件系统名称),如果它在那里,读取个性化数据并在启动时将其应用于操作系统。

Open Nebula做的另一个很酷的选项实际上是将IP地址embedded到MAC地址中。 解码你的domU里面,你就被设置了!

或者,只需使用IPv6自动configuration。 🙂

由于networking设置,DHCP不是一个选项。 由于我无法在外部提供IP,所以或多或less地排除使用预定义密钥或运行启动脚本进行SSH连接。

将静态IP用作“构buildIP”,使用已知的密钥在这个已知的IP上引导镜像,并启动login,重新configuration和重新启动的脚本?

configuration基础图像

  • 自动IP
  • 下载一个configurationtarball
    • 通过FTP或简单的东西
    • 根据机器独有的东西,把压缩包的名字作为基础,就像MAC addy一样
    • 从一个已知的地址(例如169.254.0.1或fe80 :: 1)
  • 解压缩tar以应用configuration
  • 重启

也有能力得到真正的创意,如果你想要的; 在下载请求时自动生成压缩包,可能基于数据库信息,一般基于configuration骨架。

显然, vgexport / vgimport不需要将驱动器从一个系统移动到另一个系统。 这是一个pipe理政策工具,用于防止在移动卷时访问卷。

vgchange -ay将所有卷标记为可用,但这并不能帮助我,因为它们不是直接分区。 它们是虚拟磁盘映像,里面有分区表。

然后我看到下面的脚本http://www.mceith.com/blog/?p=112 。 将磁盘直接附加到VM …根据需要进行调整,重新调用卸载。

 #!/bin/bash # [email protected] 2011 if [ ! -n "$1" -o ! -n "$2" -o ! -n "$3" ]; then echo "Usage: $0 <target vm uuid> <control domain uuid> <mount|umount>" exit 1 fi case "$3" in mount) if [ -f /tmp/tmpvbd ]; then echo "VBD allready exists!" exit 1 fi # Get uuid of vm you want to configure VMUUID=`xe vbd-list vm-uuid=$1 params=vdi-uuid empty=false --minimal` # Create VBD link to VM VDI on dom0 NEWVM=`xe vbd-create vm-uuid=$2 vdi-uuid=$VMUUID device=1` # Plug it to dom0 xe vbd-plug uuid=$NEWVM VM_VDEV=`xe vbd-list uuid=$NEWVM params=device --minimal`1 # Lag sleep 1 # Mount it mount /dev/$VM_VDEV /mnt/newvm echo $NEWVM > /tmp/tmpvbd # Do what ever you like # .... ;; umount) if [ ! -f /tmp/tmpvbd ]; then echo "No VBDs mounted?" exit 1 fi umount /mnt/newvm NEWVM=`cat /tmp/tmpvbd` # Unplug xe vbd-unplug uuid=$NEWVM xe vbd-destroy uuid=$NEWVM rm -f /tmp/tmpvbd ;; esac exit $?