Skip to main content

Ambiente

Existen empresas que poseen un ambiente (torre de comando) específico con toda la configuración de Ansible instalado para que solamente desde él se provisionen automatizaciones. Esta política solo tiene sentido en caso de que las máquinas no estén de frente a Internet.

Pre requisitos

Por este motivo, vamos a crear 2 máquinas que ya serán nuestro ambiente de playground y todos los comandos que irán hacia ellas serán hechos localmente. Podríamos crear 3 y una ser nuestra central, pero basado en lo que dije arriba, no tiene mucho sentido, sería tapar el sol con un dedo.

Vamos con nuestro amigo Ubuntu mismo. Y no olvidar garantizar que ellas puedan comunicarse en la red y liberando el acceso para la IP de la máquina local para poder hacer un ping en ellas de prueba.

Estas máquinas podrían ser VMs locales en la misma red, pero terminé haciendo esto directo en la cloud de AWS.

maquinas

Garantizando SSH y la comunicación entre ellas.

comunicación entre las mismas

Verificando el security group para permitir el ping remoto.

security group config

Probando el ping remoto.

ping remoto

Vamos a aprovechar y colocar los nombres en /etc/hosts para facilitar la vida a la hora de referenciar la máquina.

~/projects/ansible/study-ansible main !1 ?2                                                                                                                         1.1.7 01:45:21
cat /etc/hosts
# Este archivo fue generado automáticamente por WSL. Para detener la generación automática de este archivo, agregue la siguiente entrada a /etc/wsl.conf:
# [network]
# generateHosts = false
127.0.0.1 localhost
127.0.1.1 david-bon.localdomain david-bon
13.59.1.4 robot-1
3.145.169.96 robot-2

# Las siguientes líneas son deseables para hosts con capacidad IPv6
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

~/projects/ansible/study-ansible main !1 ?2 1.1.7 01:45:27
ping robot-1
PING robot-1 (13.59.1.4) 56(84) bytes of data.
64 bytes from robot-1 (13.59.1.4): icmp_seq=1 ttl=35 time=246 ms
^C
--- robot-1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 246.422/246.422/246.422/0.000 ms

~/projects/ansible/study-ansible main !1 ?2 1.1.7 01:45:33
ping robot-2
PING robot-2 (3.145.169.96) 56(84) bytes of data.
64 bytes from robot-2 (3.145.169.96): icmp_seq=1 ttl=35 time=226 ms
64 bytes from robot-2 (3.145.169.96): icmp_seq=2 ttl=35 time=253 ms
^C
--- robot-2 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 225.880/239.436/252.992/13.556 ms

~/projects/ansible/study-ansible main !1 ?2

Estamos listos para el playground.

Extras

Si generas una clave con el comando ssh-keygen debes pasar la clave pública generada a las máquinas de destino.

Para esto debes colocar esa clave en el .ssh del usuario de la máquina destino.

## ssh-copy-id id_rsa ubuntu@robot-1
ssh-copy-id nombredelaclave usuario@ip**

Con estos comandos pasará la clave pública al usuario de destino.

Si quieres inclusive usar el SSH sin el -i para identificar la clave puedes hacerlo.

## ssh-agent bash que será el bash el shell de destino
ssh-add caminodelaclave\
ssh user@ip**