Reconfigure o sistema (rede) durante a inicialização com base nas informações do HyperV

1

Estou executando um ambiente HyperV com o servidor Ubuntu 14.04 em execução em instalações de 1 geração de convidados. Corre bem.

Eu quero ser capaz de clonar o sistema (enquanto desligado), dar um novo nome, e fazer com que o novo sistema se reconfigure um pouco - IP estático diferente, configuração LVS diferente, configuração diferente do Apache2, etc. que copiando os arquivos de configuração apropriados (ou seja, o sistema tem várias cópias, ele substitui arquivos como / etc / network / interfaces com o correto)

Não consigo encontrar um local apropriado para isso. Fazendo-o antes dos sistemas de arquivos locais, o sistema de arquivos não está disponível para leitura / gravação. Fazendo isso depois, por exemplo em if-pre-up.d durante a inicialização da rede colide com a própria configuração do sistema (ou seja, eu estou substituindo / etc / network / interfaces depois que ele começou a usá-lo).

Não é desejável que ele seja totalmente inicializado e execute um script, pois ele irá aparecer na rede com um conflito de IP, afetando potencialmente o pai deste clone. Então eu quero fazer isso durante a inicialização.

De alguma forma, consegui que isso funcionasse reinicializando uma segunda vez a partir do if-pre-up.d, depois de mover os arquivos, antes de permitir que ele terminasse a execução. Mas isso parece um pouco errado por várias razões, não menos do que ele pára no grub (ou qualquer que seja a tela de boot) e requer uma chave ENTER. [Eu publiquei uma pergunta sobre isso em outro lugar, se você puder ajudar com isso, por favor, responda lá.]

Existe um local apropriado na sequência do upstart para que eu possa sobrescrever arquivos de interface de rede (e arquivos de serviço relacionados como keepaloved, apache2, haproxy) e processá-los normalmente?

    
por Linwood 10.10.2014 / 15:48

1 resposta

2

Eu continuei a bater nisso e tê-lo funcionando, embora não seja bonito.

Eu coloquei um script if-pre-up.d e tirei OUT do dispositivo eth0 de /etc/interfaces (que é o dispositivo que eu quero configurar).

Então, quando isso é acionado (o que pode ser várias vezes), configuro manualmente eth0 com as linhas de comando ip (por exemplo, ip addr , ip route , etc.). Eu também escrevi o arquivo /etc/resolvconf para servidores dns.

Eu adicionei uma linha no começo que percebe se eth0 já está configurada e sai, então se ela for executada várias vezes eu só faço o trabalho uma vez. A configuração da linha de comando e a saída de eth0 de /etc/interfaces não entram em conflito com a configuração normal de eth0 .

É feio, mas não consegui encontrar um ponto apropriado no upstart entre o sistema de arquivos local que está sendo configurado, mas antes de iniciar a configuração de rede. Pelo menos em teoria, eu poderia alterar os arquivos /etc/init associados para que eu pudesse inserir esse passo, mas isso parece frágil, especialmente durante as atualizações.

O resultado é um guest de autoconfiguração que pode ser executado no Hyper-V, verificar seu nome de host e configurar-se - endereços IP, outros arquivos de inicialização / configuração etc. Desta forma, eu posso clonar uma cópia para muitos, e obter todos os tipos de configurações diferentes, impulsionadas por um script simples.

Isso funciona ... mas eu certamente daria boas vindas a uma resposta melhor.

    
por Linwood 14.10.2014 / 04:33