XenServer: Editando a configuração do clone antes da inicialização

3

Após clonar uma imagem de base, preciso reconfigurar as configurações básicas. Regenerando a chave do host ssh, alterando as atribuições de IP estático, definindo o nome do host, etc.

Devido à configuração da rede, o DHCP não é uma opção. Isso mais ou menos descarta o SSHing com uma chave pré-definida ou executando um script de inicialização, já que não posso fornecer o IP externamente.

Eu gostaria mais de montar o sistema de arquivos da nova máquina no Dom0, mas os volumes lvm são exportados e parece ser Bad Form para importá-los para que a máquina Dom0 possa vê-los.

Qual é a sua melhor sugestão para alterar arquivos em uma VM clonada antes da inicialização? Deve ser não interativo, e vou adivinhar que o acesso ao script via xe console não funcionará bem.

    
por Jeff Ferland 22.03.2012 / 13:53

4 respostas

1

Aparentemente, o vgexport / vgimport não é necessário para mover unidades de um sistema para outro. É uma ferramenta de política administrativa para impedir o acesso a volumes no tempo necessário para movê-los.

vgchange -a y marcou todos os volumes como utilizáveis, mas isso não me ajudou, porque eles não são partições diretas. São imagens de disco virtuais que possuem tabelas de partição dentro delas.

Então me deparei com o script abaixo, no link . Conexão direta de discos para a VM ... ajuste conforme necessário, a nova chamada para desmontar.

#!/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 $?
    
por 22.03.2012 / 14:36
5

Você deve fazer o que alguns sistemas de implementação (Open Nebula, por exemplo) fazem - criar um pequeno segundo drive que consiste nos dados de personalização.

Configure sua imagem para esperar que esta segunda unidade esteja lá (talvez com um UUID ou sistema de arquivos conhecido) e, se estiver lá, leia os dados de personalização e aplique-os ao SO durante a inicialização.

A outra opção interessante que o Open Nebula faz é incorporar o endereço IP no endereço MAC. Decodifique isso dentro do seu domU e você está pronto!

Ou apenas use o autoconfig do IPv6. :)

    
por 22.03.2012 / 14:21
4

Because of the network setup, DHCP is not an option. That more or less rules out SSHing in with a predefined key or running a startup script since I can't provide the IP externally.

Que tal usar um IP estático como um "IP de construção", inicializar a imagem neste IP conhecido com uma chave conhecida e lançar um script que efetue login, reconfigure e reinicialize?

    
por 22.03.2012 / 14:11
2

Configure a imagem base para

  • auto-ip
  • faça o download de um tarball de configuração
    • via ftp ou algo simples
    • baseie o nome do tarball em algo único para a máquina, como o MAC addy
    • de um endereço conhecido (por exemplo, 169.254.0.1 ou fe80 :: 1)
  • descompacte o tar para aplicar a configuração
  • reinicializar

Também tem a capacidade de ser realmente criativo se você quiser; gere automaticamente o tarball na solicitação de download, possivelmente com base nas informações do banco de dados e geralmente com base em um esqueleto de configuração.

    
por 22.03.2012 / 14:29