Tags:

Gerenciando seus serviços AWS via Shell Script

Quem vive da administração de servidores baseados em soluções unixen-like, tais como Linux, OpenBSD e outros e está começando a gerenciar soluções em ambientes de Nuvem, certamente deve se impressionar com a facilidade da interface gráfica oferecida. Tarefas,  antes tão complicadas, podem ser executadas facilmente, tais como anexar um novo disco, acrescentar um IP de internet, gerenciar regras de firewall, dentre outros. Por outro lado, é quase certo esses mesmos administradores tenham uma boa carga de conhecimento de gerenciamento de sistemas baseados em linha de comando (ambiente shell), bem como scripts já prontos que fazem parte do seu pacote pessoal de gerenciamento. Atividades como monitoramento, backup, criação de usuários, gerenciamento de permissões, dentre muitas outras possibilidades.

Falando especificamente do ambiente Amazon Web Services (AWS), é possível unir o útil ao agradável, trabalhando com as facilidades da Nuvem e o automatismo de ferramentas baseadas em linha de comando. Agora é possível executar atividades que antes se fazia fisicamente (e com cartão de crédito), em shell script, criando aplicativos baseados em comandos de gerenciamento do ambiente AWS. Falando em exemplos práticos, podemos citar alguns casos de uso dessas ferramentas shell:

  • Criar novos servidores
  • Ligar/Desligar servidores (que tal agendar isso em um crontab para economizar custos?)
  • Trocar o tamanho – o size (tipo/capacidade do hardware) – de servidores
  • Adicionar/Remover instâncias de uma Ambiente Load Balancer.
  • Gerenciar regras de firewall (não o iptables; os Security Groups da AWS.

Claro que você pode fazer muito mais que isso, tudo depende da sua capacidade e habilidade com Scripts Shell e de descobrir as capacidades que a Interface Shell AWS permite.

Indo direto ao assunto, vamos ver como preparar e configurar um servidor Linux para ser o nosso Servidor Central de Administração. A ideia é que esse servidor seja uma ponte para todo o seu ambiente no AWS, um Console central. Esse servidor pode ser do tipo mais simples, um size t1.micro, pois ele fará pouco por si mesmo.

O primeiro passo é instalar os pacotes .rpm das ferramentas de administração AWS. Faça uma busca pelos grupos de pacotes que te interessam:

ScreenHunter_16 Nov. 28 17.30

Você também pode instalar esses pacotes em um servidor fora da Amazon. Basta que você configure seu repositório no yum.conf de seu servidor. Não iremos entrar nos detalhes disso, nesse post.

Aqui, podemos ver quais pacotes temos instalados em nosso Console Central:

ScreenHunter_17 Nov. 28 17.36

Seus comandos foram instalados, provavelmente, em /opt/aws/apitools/*:

ScreenHunter_18 Nov. 28 17.44

Sugiro que os PATHs desses comandos sejam acrescentados a sua variável PATH, para facilitar seu uso:

ScreenHunter_19 Nov. 28 17.45

Você pode visualizar a gama de possibilidades, listando alguns comandos disponíveis:

ScreenHunter_20 Nov. 28 17.47Aqui, listamos apenas parte dos comandos de gerenciamento de ec2 (digitando <TAB> ao final, para o auto-complete).

Agora, devemos configurar nosso servidor com as variáveis de ambiente para que seu ambiente possa ser acessado. Minha sugestão é que isso seja colocado em um arquivo de configuração único, sendo chamado antes de todos os scripts ou no .profile do usuário. Você pode ter vários arquivos, por exemplo, se tiver vários clientes/ambientes para gerenciar. Em especial lembre-se que essas variáveis não são ajustadas por default em scripts chamados pelo crontab, o que reforça a minha sugestão.

O processo de criação das chaves de acesso e sua senha fica um pouco fora do escopo desse post, mas tudo está explicado nesse link:

http://docs.aws.amazon.com/AWSEC2/latest/CommandLineReference/set-up-ec2-cli-linux.html

Você deve criar uma chave de acesso (Access Key ID) e será gerado uma senha para a mesma. Observe que essa senha não será registrada no Console da AWS e portanto deve ser arquivada em local seguro. Caso a perca, não terá como usar sua chave de acesso. Para usar as chaves, basta configurar as variáveis de ambiente para usá-las:

ScreenHunter_22 Dec. 11 15.40Note que foi ajusta a variável EC2_URL, para indicar qual a região default que será usada em todos os comandos AWS.

Pronto! Agora é possível administrar seus dados na AWS via scripts. Note que não há necessidade de o Console Central ser uma máquina na Amazon, nem que mesmo seja de sua conta na AWS.  Você pode administrar diversos clientes ou empresas, mudando apenas as variáveis acima citadas.

Para finalizar podemos dar alguns exemplos práticos de atividades que podem ser executadas através de Shell Script.

Exemplo 1: Criar um novo servidor:

ScreenHunter_23 Dec. 11 16.01

Nesse caso, oa valores da AMI escolhida, bem como da chave de acesso (-k) já devem ser conhecidos. Pode ser o caso de se criar um arquivo com valores default para diversos desses dados. O segundo comando, ec2-create-tags, define o nome do servidor criado.

Exemplo 2: Pegar os dados de uma instância:

ScreenHunter_25 Dec. 11 16.45Esse exemplo, apesar de simples é bem útil, pois vários dados necessários a outros comandos podem ser arquivados em um arquivo específico e usado posteriormente.

Exemplo3: Script simples: desliga um servidor, altera seu Instance Type (-l, -h) e religa-o:

ScreenHunter_25 Dec. 11 16.45

Para finalizar, é importante lembrar que quanto maior o poder, maior a responsabilidade. No mundo unix, você já deve saber, os comandos não ficam perguntando se você tem certeza ou deseja continuar (ao contrário das interfaces GUI). Assim, você pode facilmente destruir todo o seu ambiente com um único comando equivocado…e talvez o seu emprego também.

 

 

 

Por MATIAS SCHWEIZER

Analista de Sistemas Operacionais e Redes, formado na UNICAMP, plastimodelista nas horas vagas e pai em tempo integral.

Postado em: 16 de dezembro de 2014

Confira outros artigos do nosso blog

Estimando Custos na AWS

08 de março de 2016

Anderson Lima

Usando Amazon SQS como sistema de mensagens (2/2)

02 de março de 2016

Luis Sergio F. Carneiro

Cine Dojo: a mistura da MATERA de Coding Dojo, Cinema, Pipoca e TI!

04 de fevereiro de 2016

Valmir Massafera Jr

Documentação da sua Nuvem com Linha do Comando

15 de dezembro de 2015

Matias Schweizer

Deixe seu comentário