Tenho algumas imagens do Linux EC2 que realizam trabalhos de processamento noturno para um dos meus projetos. De tempos em tempos, precisarei entrar, fazer algumas alterações no código, configurar algumas coisas e reorganizar a imagem.
Meu conjunto de ferramentas para essas operações é esparsamente escasso (SSH na caixa, edite arquivos no VIM, arquivos remotos WGET que eu preciso) e suspeito que haja 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 equivalente à área de trabalho remota para acessar a caixa ou é tudo linha de comando? O gerenciamento de caixas do Windows EC2 é trivial, pois você pode simplesmente acessar a área de trabalho remota e transferir arquivos pela rede. Existe um equivalente a isso no mundo Linux?
Você está fazendo suas alterações de configuração / ajustes de script diretamente na máquina? Ou você tem algo configurado na sua caixa local para editar esses arquivos remotamente? Ou você está simplesmente editando-os remotamente e depois transferindo-os a cada salvamento?
Como você move os arquivos entre o EC2 e o ambiente local? FTP? Algum tipo de unidade mapeada via VPN?
Eu realmente precisaria ter algumas práticas recomendadas para administrar essas caixas. Qualquer sugestão para remover parte da dor seria bem-vinda!
EDIT: Evidentemente, eu não estava claro acima, pois as duas primeiras respostas giravam em torno do gerenciamento e configuração de instâncias do EC2. Eu só quero saber como usar a área de trabalho remota em um servidor Linux em execução para que a movimentação e edição de arquivos seja menos dolorosa.
fonte
Respostas:
Eu não faço mais muita 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ções, manutenção de nós do EC2 etc. Ferramentas na minha caixa de ferramentas:
(1) - Divulgação, trabalho na Opscode. Outras ferramentas preenchem esse espaço, como o Puppet do Reductive Lab.
Eu agrupo uma AMI quando tenho um nó criado da maneira que preciso para uma função específica. Por exemplo, se estou construindo um servidor de aplicativos Rails, instalarei todos os pacotes de pré-requisitos para economizar tempo na compilação.
Quando tudo mais falha, eu entro nos sistemas com SSH. Eu fiz administração manual do sistema por muitos e muitos anos, isso é algo antigo.
Não instalo nenhuma GUI nos servidores, a menos que um pacote tenha uma dependência e uma seja instalada automaticamente.
Normalmente, faço dois tipos de transferência / manutenção de arquivos.
Para pacotes nativos da plataforma, eu uso a ferramenta de gerenciamento de pacotes padrão, como APT ou YUM. Para instalações de código-fonte (something.tar.gz), geralmente faço o download via wget.
Os arquivos de configuração geralmente são modelos de ERB gerenciados pelo Chef.
Eu uso SSH e SCP / SFTP para transferir arquivos manualmente.
Eu 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. Começo na minha estação de trabalho local.
Existem alguns locais em que os arquivos que eu uso nos nós do EC2 podem ser armazenados.
Faço muito trabalho no EC2, testando principalmente ambientes e alterações. Como resultado de minhas ferramentas e fluxo de trabalho, passo mais tempo trabalhando em assuntos com os quais me importo e menos em lidar com arquivos individuais e pensar em configurações específicas.
fonte
Todo o nosso software é implantado via RPM. Cada tipo de instância do EC2 é descrito por um arquivo kickstart (que lista os RPMs a serem instalados ...). A configuração do kickstart significa que uma máquina de trabalho de cada tipo de instância pode ser criada do zero em cerca de 10 minutos.
Em seguida, temos um programa que chama o anaconda (o instalador da Red Hat) para pegar um arquivo kickstart, instalar o sistema em um diretório, agrupar o diretório e enviá-lo ao S3 como Amazon Machine Image. Este é um passo, apenas digito:
Como uma máquina pode ser completamente reconstruída, carregada e executada em cerca de 40 minutos, é mais fácil criar novas imagens da máquina do que executar o sysadmin nas instâncias reais (descartáveis) do EC2. Portanto, nenhum sysadmin é realmente executado nas instâncias do EC2.
fonte
Eu gosto do NX para acesso remoto à GUI. Muito bem documentado também.
fonte
Eu uso o nautilus para bastante gerenciamento de arquivos e ssh para comandos. Ele se conecta diretamente ao seu sistema como se estivesse fisicamente no data center. Se você estiver fazendo isso a partir de uma caixa do Windows, esse tipo de conectividade não funcionará, pois os vfs no Windows são limitados.
fonte
Eu acho que você não precisa de uma área de trabalho remota para essas tarefas.
Como outros mencionados, você pode usar o SFTP para transferir os arquivos entre as caixas. Use o cliente WinSCP para conectar-se via sftp, que você também pode usar para editar os arquivos na sua máquina Windows (clicando duas vezes neles) como se estivesse na sua máquina local. Você também pode usá-lo para copiar / mover arquivos remotamente.
Você também pode considerar usar o Midnight Commander (mc) no console ssh que pode acelerar as operações de arquivo. Para instalar, use o comando
yum install mc
ouapt-get install mc
. Depois, você pode iniciá-lo digitandomc
no terminal. Ele também possui um visualizador e editor integrados que são mais diretos que o vim.Se você realmente deseja ter uma GUI - que normalmente não temos em servidores -, instale o ambiente X e conecte-o ao VNC. Nesses casos, nos conectamos ao servidor VNC através de um túnel ssh que adiciona mais segurança a ele.
fonte
Em resposta à sua pergunta sobre como configurar uma área de trabalho remota com o X, se você estiver usando o Debian, leia isto . Não é exatamente o melhor documento para configurá-lo. Você instala muitos pacotes, mas tem a ideia certa. Você realmente só precisa de um driver de vídeo fictício para o X e, em seguida, o VNC inicia uma área de trabalho do X.
fonte
Se você estiver usando o ubuntu: estamos considerando o uso de paisagem para isso, é um produto comercial da equipe do ubuntu (canonical) e será integrado aos comandos ec2.
fonte
Você pode tentar algo como capistrano, mas se isso não for suficiente para o que você procura, parece que você é candidato a algum tipo de gerenciamento de configuração.
O Puppet, reductivelabs.com/products/puppet/, é realmente um destaque nesse 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 trabalhar duro com antecedência.
Se você estiver usando uma das distribuições debian / ubuntu, eu verificaria o Slack Roles.
É um invólucro sofisticado para os scripts rsync e shell. Isso tem muito pouco aprendizado inicial e funciona bem, no entanto, à medida que você cresce, pode ficar um pouco desajeitado.
fonte