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.

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

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:

Template user_data
Vá em “Hosts” -> “Provisioning templates” e procure por user_data.
Abra o “UserData default” e associe ele ao SO CentOS:

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

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:

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

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”.

Clique em “Submit” e aguarde:

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

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:

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 !
One thought on “Foreman + AWS”
Comments are closed.