Maneira fácil de converter uma AMI personalizada de 32 bits em uma de 64 bits?

7

Eu personalizei a AMI (suportada pelo EBS) para executar uma versão demo de uma aplicação nossa. (A AMI contém o Ubuntu 11.04 com uma configuração do Tomcat e MySQL para o aplicativo em si, e o Jenkins para atualização fácil de um clique da demonstração).

Esta é uma AMI de 32 bits, o que significa que tenho as seguintes opções de tipo de instância :

  • Micro (t1.micro)
  • Pequeno (m1.small)
  • Meio de alta CPU (c1.medium)

Notamos que gostaríamos de um pouco mais de desempenho para o servidor de demonstração do que o que o c1.medium pode oferecer. (Especificamente, suspeito que "Desempenho de E / S: Moderado" possa ser um gargalo, embora não tenha certeza se isso ajudaria, já que usamos o EBS para tudo.)

De qualquer forma, para usar os tipos de instância mais poderosos (por exemplo, "m1.large" ou "c1.xlarge"), eu precisaria de uma AMI de 64 bits .

Uma maneira de fazer isso é criar uma nova instância a partir da AMI do Ubuntu de 64 bits limpa. , em seguida, re-configurar meu sistema lá e, finalmente, salvá-lo como uma nova AMI. Eu poderia montar um volume com a configuração atual e, em seguida, cp -a algumas coisas para o disco raiz da nova instância, o que ajudaria um pouco. Mas, mesmo assim, essa abordagem pode ser um tanto tediosa e demorada.

Então, minha pergunta é, existe alguma maneira mais fácil e automatizada de converter uma AMI de 32 bits em uma de 64 bits?

    
por Jonik 20.09.2011 / 13:51

4 respostas

7

Não, não há maneira automatizada. Você terá que criar uma nova AMI começando com o Ubuntu.

É possível converter uma instalação do Unbuntu, mas é muito confuso. É melhor você fazer uma AMI fresca.

    
por 20.09.2011 / 14:00
14

Práticas recomendadas:

  1. Sempre que você cria uma AMI (ou mesmo configura uma instância) sempre documenta as etapas exatas que você realizou para instalar e configurar o software e quais dados você colocou nele e onde. Isso tem muitos benefícios, incluindo facilitar a reconstrução da mesma AMI para uma arquitetura diferente.

    Melhor ainda, recomendo a criação de scripts para a maioria ou todas as etapas de instalação e configuração, para que você possa automatizar a criação das AMIs. Isso facilita ajustar a configuração e testar novas versões.

    Aqui está uma amostra de como eu construo uma AMI do Ubuntu com Git e gitolite instalado para servidores privados de repositório Git:

    https://github.com/alestic/alestic-git/blob/master/bin/alestic-git-build-ami

  2. A primeira recomendação acima é para configurar o software que geralmente está no volume raiz. Seus dados devem ser colocados em volumes separados do EBS que você anexa à sua instância depois de executar a AMI. Isso tem muitos benefícios, incluindo a capacidade de mover os dados entre as instâncias, como quando você deseja alternar para a execução de uma nova AMI. Também permite que você faça cópias de seus volumes de dados para anexar a instâncias de desenvolvimento.

Você pode pensar que este conselho é tarde demais para você, mas você está prestes a construir outra AMI, então ...

    
por 20.09.2011 / 20:32
5

Você precisará começar com uma nova AMI, mas você pode gerar uma lista de pacotes na imagem antiga usando o dpkg:

dpkg --get-selections | awk '{print $1}' > pkgs.old

Em seguida, use isso na nova imagem para descobrir quais pacotes você precisa instalar:

dpkg --get-selections | awk '{print $1}' | fgrep -v -f - pkgs.old

Então, provavelmente, copiar arquivos de / etc deve levar você até o fim.

E o +1 para criar scripts - você dificilmente define essas coisas uma ou duas vezes - geralmente é muitas vezes. Ter tudo isso automatizado e no controle de origem é crucial.

    
por 20.09.2011 / 21:03
3

Tente fazer engenharia reversa na AMI de 32 bits com blueprint:

link

Salve a saída como um script bash e use o gancho de dados do usuário ao ativar a versão de 64 bits.

    
por 20.09.2011 / 23:40