Foreman + AWS

Mais um sobre Foreman e agora sobre como utilizá-lo com instâncias na AWS.

Vamos focar no Foreman em si e no mínimo necessário para sua instalação e integração com a AWS.

Pré-requisitos

Você precisa ter um VPC e subnet configurados, KeyPair e um security group que aceite conexões SSH e HTTP/HTTPS.

Por comodidade, é recomendado alocar um Elastic IP para a instância do Foreman.

Tendo tudo isso, vamos em frente.

 

Imagem AMI

Para criar instâncias na AWS você vai precisar ter uma AMI sua. Vamos começar por ela então.

Suba uma instância t2.medium com CentOS 7 e volume de 20Gb em SSD. Porque t2.medium ? Porque aproveitaremos essa imagem para ser nosso Foreman depois e o Foreman precisa de 4Gb de memória no mínimo. Coloque no security groups que permita as conexões citadas e selecione seu key pair. Associe o elastic IP.

Acesse a instância e atualize o sistema para poupar tempo no futuro.

Não se preocupe com swap, hostname, selinux nem nada por enquanto. Só estamos querendo criar nossa própria AMI atualizada.

Desligue a instância e, pelo painel da AWS, crie uma imagem à partir dela. Pode chamá-la de “CentOS 7”, por exemplo.

Pronto !

 

Preparando o Foreman

Ligue a instância novamente e vamos começar a configurar o que precisamos para rodar o Foreman.

Swap.

Além dos 4Gb de ram da t2.medium, vamos criar uma swap de 2Gb:

dd if=/dev/zero of=/swapfile bs=1024k count=2000
chmod 0600 /swapfile && mkswap /swapfile
echo "/swapfile none swap defaults 0 0" >> /etc/fstab
swapon -a

Hostname

Vamos dar um hostname à instância do foreman (use um FQDN válido e que resolva de preferência, mas aqui vou usar o domínio .localdomain).

hostnamectl set-hostname foreman.localdomain

Para que isso não se perca no boot, acrescente o seguinte no final do arquivo /etc/cloud/cloud.cfg (mas antes da marcação do vim):

preserve_hostname: true

Também é necessário colocar no /etc/hosts uma entrada com o IP do foreman e seu hostname, no estilo “ipdoforeman fqdndoforeman hostnamedoforeman”

No meu caso:

172.31.0.65 foreman.localdomain foreman

Reboote a instância e verifique se a swap e o hostname estão OK.

Instalando o foreman

Agora sim vamos instalar o Foreman.

Use sempre as instruções na página oficial além de usar a última versão estável. Aqui vou usar a 1.16 que ainda está em RC, mas já deve se tornar a estável.

Instale os repositórios e pacotes indicados nas instruções e depois, para instalar o foreman em si, digite:

foreman-installer --foreman-admin-password "suasenha" --enable-foreman-compute-ec2

Configurando o Foreman

Depois de instalado, entre na interface web como admin e a senha que você forneceu.

Compute Resource

Vá em Infrastructure -> Compute Resource -> Create Compute Resource.

Dê o nome “AWS” e ponha o provider EC2.

Coloque sun access e secret key e selection uma região.

Screenshot 2017-11-24 17.21.49.png

Imagem

Depois, clique em “Create Image”, aponte para o ID da imagem do CentOS que criamos e marque o User data:

Screenshot 2017-11-24 17.35.17.png

Compute profile

Agora vá em “Compute Profiles” e edite o 1-Small. Selecione o flavor t2.micro, a imagem, a AZ, sua Subnet, security groups e o managed ip para Private:

Screenshot 2017-11-24 17.37.18.png

 

Template user_data

Vá em “Hosts” -> “Provisioning templates” e procure por user_data.

Abra o “UserData default” e associe ele ao SO CentOS:

Screenshot 2017-11-24 17.41.54.png

Agora vá em “Hosts” -> “Operating systems”, selecione o CentOS e o template user_date:

Screenshot 2017-11-24 17.43.22.png

 

Hostgroup

Vamos criar um host group apenas para estar alguns defaults para que não precisemos setar na criação de cada instância.

Vá em “Configure” -> “Host Groups” e “Create Host Group”.

Na aba Host Group, popule com:

Screenshot 2017-11-24 17.46.42.png

Na aba “Network”, preencha com o domínio, e na aba “Operating System” com:

Screenshot 2017-11-24 17.47.46.png

A senha é opcional. Ela será configurada para o usuário “admin” no sistema.

 

You’re ready to go !

 

Novas instâncias

Agora vamos criar novas instâncias !

Criando nova instância

Vá em “Hosts” -> “Create Host”.

Preencha com nome, ponha o host group que criamos e selecione a AWS em “Deploy on”.

Screenshot 2017-11-24 17.50.33.png

Clique em “Submit” e aguarde:

Screenshot 2017-11-24 17.52.13.png

Logo depois ele te redirecionará para a tela do host criado:

Screenshot 2017-11-24 17.57.03.png

Quando ele terminar os scripts pós-instalação, ele passará ao estado “Installed”. Se isso não ocorrer provavelmente é porque a instância não conseguiu resolver o hostname do Foreman para sinalizar que terminou.

É muito importante que as máquinas resolvam o hostname do Foreman e, preferencialmente, o Foreman também resolva o hostname delas (ele pode se integrar ao seu DNS e criar a entradas quando criar máquinas novas).

Acessando a instância

Para acessar a máquina você pode usar tanto o IP interno quanto externo. Como vou acessar direto da minha estação, vou pelo externo. Você pode ver o IP externo indo na aba “VM” na tela do host:

Screenshot 2017-11-24 18.00.07.png

Você pode acessar as novas instâncias tanto pelo seu KeyPair original (usuário centos no caso do CentOS) ou com usuário “admin” com a senha que você colocou na criação do hostgroup.

Pronto !

Agora use seu Ansible, Puppet etc para terminar de configurar seu novo sistema.

Enjoy !

 

Um comentário em “Foreman + AWS

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s