0

[DevOps] Bastion Host com Ansible

11 Flares 11 Flares ×

E ai pessoal, tudo bem !?

Neste artigo vou mostrar como configurar o ansible para acessar uma instancia via um bastion host.

Quando projetamos uma infra-estrutura é comum limitar em um único ponto de acesso SSH. Projetado e configurado para suportar ataque. Teríamos apenas como proxy/gateway para acessar a nossa infra. Nos o chamamos de bastion host.

Como o ansible usa o SSH para praticamente todas as suas operações e, uma vez que nos permite especificar um arquivo de configuração personalizado, podemos usar o ProxyCommand, criando exatamente para este propósito. É fácil intergrar um host bastion com ansible. Para isso, precisar configurar um arquivo de configurações SSH específico do Ansible normalmente encontrado em ~/.ssh/config.

O arquivo de configuração do Ansible é chamado de config e ele está localizado no diretório .ssh do usuário em que esta executando o comando ansible. Muitas vezes, este arquivo não é criado por default, portanto, devemos criá-lo. 🙂

touch ~/.ssh/config

O arquivo config é organizado por hosts. Cada definição de host pode definir opções de conexões para o host específico. Uma seção é definida com o cabeçalho Host para o seguinte cabeçalho Host.

Normalmente, para fins organizacionais, as opções definidas para cada host são recuadas. Esta não é uma exigência, mas uma convenção útil que permite uma interpretação mais fácil do arquivo.

O formato será algo como se segue.

Host 10.10.0.*
  ProxyCommand sshpass -p XXXXXXX ssh -W %h:%p jslopes@10.10.0.100

Host *
  ControlMaster auto
  ControlPath ~/.ssh/ansible-%r@%h:%p
  ControlPersist 1m

O que significa tudo isso ?

  1. Em cabeçalho “Host 10.10.0.*” indica que todos os hosts desta subnet usarão as configurações definidas nesse bloco, ou seja, todos os hosts serão acessados usando o ProxyCommand via jslopes@10.10.0.100.
  2. Em próximo cabeçalho “Host *” definição de host genérico. Serão configurações combinadas que podem ser usadas para configurar uma conexão multiplexadas com SSH.
  3. ControlMaster – Informa ao SSH que deseja permitir uma multiplexação quando possível. Geralmente devemos definir como auto.
  4. ControlPath – É utilizada específicamente para o socket que é utilizado para controlar as conexões.
  5. ControlPersist – Esta é o tempo em segundos que a conexão TCP deve permanecer aberta após o SSH for fechado.

Feito isso, agora podemos ser capazes de acessar uma host através de um bastion host!

Se enterresou pelo Ansible, não deixe de lê uma breve introdução sobre clicando aqui.

Fonte:

https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing

http://docs.ansible.com/ansible/faq.html

Jonatas Lopes

Sempre aprendendo coisas novas e passando o conhecimento adiante !!!

Dúvidas? Deixe seu comentário ou entre em contato.