Como você administra suas caixas do EC2 Linux?

8

Eu tenho algumas imagens do EC2 Linux que fazem trabalhos noturnos para um de meus projetos. De tempos em tempos, precisarei entrar, fazer algumas alterações no código, configurar algumas coisas e empacotar novamente a imagem.

Meu conjunto de ferramentas para estas operações é dolorosamente esparso (SSH na caixa, editar arquivos em VIM, arquivos remotos WGET que eu preciso), e eu suspeito que há uma maneira muito melhor de fazê-lo. Estou curioso para ouvir o que outras pessoas na minha posição estão fazendo.

  • Você está usando alguma forma de sistema de janelas e desktop equivalente para acessar a caixa, ou é tudo linha de comando? Gerenciar caixas do EC2 Windows é trivial, já que você pode simplesmente fazer o desktop remoto e transferir arquivos pela rede. Existe um equivalente a isso no mundo do Linux?

  • Você está fazendo suas alterações de configuração / ajustes de script diretamente na máquina? Ou você tem algo configurado em sua caixa local para editar esses arquivos remotamente? Ou você está simplesmente editando-os remotamente e depois transferindo-os a cada gravação?

  • Como você está movendo arquivos entre o EC2 e seu ambiente local? FTP? Algum tipo de unidade mapeada via VPN?

Eu realmente preciso ter algumas práticas recomendadas para administrar essas caixas. Qualquer sugestão para remover um pouco da dor seria muito bem vinda!

EDIT: Evidentemente, eu não estava claro acima, já que as duas primeiras respostas giraram em torno do gerenciamento e configuração de Instâncias do EC2. Eu só quero saber como a área de trabalho remota em um servidor Linux em execução, para que mover arquivos e editá-los seja menos doloroso.

    
por Jason Kester 19.06.2009 / 11:27

8 respostas

13

Eu não faço mais administração manual do sistema. Eu vejo minha infraestrutura como uma entidade programável e a trato como tal, configurando sistemas com ferramentas que automatizam o gerenciamento de configuração, a manutenção do nó EC2, etc. Ferramentas na minha caixa de ferramentas:

  • Ruby (minha linguagem de script / ferramenta favorita)
  • Git (controle de versão)
  • Chef do Opscode (escrito em Ruby) (1)
  • Capistrano (manutenção em massa ad hoc)
  • Ferramentas da API EC2 da Amazon, por exemplo, e manutenção de imagem.
  • gem AWS do Rightscale (ligações do Ruby para EC2)

(1) - Divulgação, eu trabalho para o Opscode. Outras ferramentas preenchem esse espaço como o Puppet do Reductive Lab.

Eu faço o empacotamento de uma AMI quando tenho um nó construído da maneira que preciso para uma função específica. Por exemplo, se eu estiver criando um servidor de aplicativos Rails, instalarei todos os pacotes de pré-requisitos para economizar tempo na compilação.

Quando tudo mais falhar, eu entro em sistemas com SSH. Eu fiz a administração do sistema manual por muitos anos, isso é velho chapéu.

Are you using some form of Windowing system and remote-desktop equivalent to access the box, or is it all command line?

Eu não instalo nenhuma GUI em servidores, a menos que um pacote tenha uma dependência e um seja instalado automaticamente.

Is there an equivalent to this in the Linux world? (transferring files)

Normalmente, faço dois tipos de transferência de arquivos / manutenção de arquivos.

  • Instalação do pacote
  • Arquivos de configuração

Para pacotes nativos da plataforma, eu uso a ferramenta de gerenciamento de pacotes padrão, como o APT ou o YUM. Para instalações de fontes (something.tar.gz), geralmente faço o download via wget.

Os arquivos de configuração são normalmente modelos ERB gerenciados pelo Chef.

Eu uso SSH e SCP / SFTP para transferir arquivos manualmente.

Are you doing your config changes/script tweaks directly on the machine? Or do you have something set up on your local box to edit these files remotely? Or are you simply editing them remotely then transferring them at each save?

Mantenho tudo relacionado ao gerenciamento de sistemas em um repositório de controle de software. Aqui está meu fluxo de trabalho típico ao atualizar a configuração em um ou mais sistemas. Eu começo da minha estação de trabalho local.

  • Puxar do repositório mestre do Git para as alterações dos outros.
  • Edite arquivo (s) localmente (por exemplo, atualize um arquivo de configuração).
  • Confirme a alteração, envie para o mestre.
  • No servidor do Chef (conectado via SSH), puxe a última alteração que acabei de confirmar.
  • Implante a configuração no local apropriado no servidor do Chef (eu uso o Rake para isso).
  • Os clientes chefes são executados em um intervalo, para que eles captem as alterações a cada 30 minutos. Se eu precisar de algo imediatamente, eu executo o cliente-chefe manualmente.
  • Verifique a alteração!

How are you moving files back and forth between EC2 and your local environment? FTP? Some sort of Mapped Drive via VPN?

Existem alguns locais onde os arquivos que eu uso nos nós do EC2 podem ser armazenados.

  • servidor do chef. Modelos de configuração principalmente, alguns pequenos pacotes também.
  • GitHub. Nós armazenamos nosso código (projetos de código aberto) no GitHub. Os nós do EC2 podem chegar a isso facilmente (como para uma verificação da versão mais recente de algo).
  • baldes do Amazon S3. Algumas coisas são armazenadas em um balde.

Eu faço muito trabalho no EC2, principalmente testando ambientes e alterações. Como resultado de minhas ferramentas e fluxo de trabalho, passo mais tempo trabalhando em coisas com as quais realmente me preocupo e menos lidando com arquivos individuais e pensando em configurações específicas.

    
por 29.06.2009 / 10:14
6

Todo o nosso software é implantado via RPM. Cada tipo de instância do EC2 é descrito por um arquivo de kickstart (que lista os RPMs a serem instalados ...). A configuração do kickstart significa que uma máquina funcional de cada tipo de instância pode ser construída do zero em aproximadamente 10 minutos.

Nós então temos um programa que invoca o anaconda (o instalador do Red Hat) para pegar um arquivo de kickstart, instalar o sistema em um diretório, depois empacotá-lo e enviá-lo para o S3 como uma Amazon Machine Image. Isso é tudo um passo, então eu só digito:

kickstart2ami webserver.ks

Como uma máquina pode ser completamente reconstruída, carregada e executada em cerca de 40 minutos, é mais fácil criar novas imagens de máquina do que executar sysadmin nas instâncias EC2 reais (descartáveis). Portanto, nenhum sysadmin é realmente executado em instâncias do EC2.

    
por 19.06.2009 / 11:48
3

Eu gosto de NX para acesso remoto a gui. Muito bem documentado também.

    
por 11.08.2009 / 21:20
3

Eu uso o nautilus para um pouco de gerenciamento de arquivos e ssh para comandos. Ele conecta-se diretamente ao seu sistema como se estivesse nele fisicamente no data center. Se você estiver fazendo isso a partir de uma caixa do Windows, esse tipo de conectividade não funcionará, pois o vfs no Windows é limitado.

    
por 19.11.2011 / 20:30
2

Acho que você não precisa de um ambiente de trabalho remoto para essas tarefas.

Como outros usuários mencionaram, você pode usar o SFTP para transferir os arquivos entre as caixas. Use o WinSCP client para conectar via sftp, que você também pode usar para editar os arquivos em sua máquina Windows (clicando duas vezes sobre eles) como se estivesse em sua máquina local. Você também pode usá-lo para copiar / mover arquivos remotamente.

Você também pode considerar o uso do Midnight Commander (mc) no console do ssh que pode acelerar as operações de arquivo. Para instalar, use o comando yum install mc ou apt-get install mc . Depois, você pode iniciá-lo digitando mc no terminal. Ele também tem um visualizador e editor embutido que é mais simples que o vim.

Se você realmente quer ter GUI - que normalmente não temos em servidores - você precisa instalar o ambiente X e conectar-se a ele com o VNC. Em tais casos, nos conectamos ao servidor VNC através de um túnel ssh que adiciona mais segurança a ele.

    
por 19.11.2011 / 22:43
1

Em resposta à sua pergunta sobre como configurar uma área de trabalho remota com o X, se você estiver usando o Debian, leia . Não é exatamente o maior documento sobre como configurá-lo. Você tem que instalar muitos pacotes, mas tem a idéia certa. Você realmente só precisa de um driver de vídeo fictício para o X, e então ter o VNC iniciando um desktop X.

    
por 29.06.2009 / 12:22
0

Se você está usando o Ubuntu: estamos pensando em usar paisagem para isso, é um produto comercial do Ubuntu (canônico ) e será integrado com os comandos ec2.

    
por 19.06.2009 / 11:34
0

Você poderia tentar algo como o capistrano, mas se isso não for suficiente para o que você quer, então parece que você é um candidato a algum tipo de gerenciamento de configuração.
Puppet, reductivelabs.com/products/puppet/, é um verdadeiro destaque neste campo, mas pode ser um pouco exagerado para você, a menos que você tenha planos de se tornar maior e então vale a pena o trabalho árduo na frente. Se você está usando uma das distribuições debian / ubuntu, eu gostaria de verificar Slack Roles
É um wrapper de fantasia para scripts rsync e shell. Isso tem muito pouco aprendizado inicial e funciona bem, no entanto, à medida que você cresce, pode ficar um pouco confuso.

    
por 19.06.2009 / 13:45