Não é possível executar o ansible-playbook no host ec2, o SSH através do terminal está funcionando bem

Não é possível executar o ansible-playbook no host ec2, o SSH através do terminal está funcionando bem

Criei uma instância ec2 com a porta 22 aberta e consigo me conectar a esta instância usando a chave privada do meu terminal, no entanto, não consigo conectá-la quando tento o ansible-playbook. Tenho usado inventário dinâmico.

O comando que uso para SSH e que também é bem-sucedido (estou executando o comando abaixo onde a chave privada é colocada):

ssh -i "test-key.pem" [email protected]

Conteúdo do manual:

---
- name: Hello World example
  hosts: all
  become: true

  tasks:
    - name: Printing Hello World
      debug:
          msg: "Hello World"

O comando que executei:

ansible-playbook -i ec2.py --private-key /home/testuser/.ssh/test-key.pem -l instance_id playbook-hello.yml

até eu tentei com:

ansible-playbook -i ec2.py --private-key /home/testuser/.ssh/test-key.pem -l instance_id -e 'ansible_ssh_user=ubuntu' playbook-hello.yml

Erro:

fatal: [x.x.x.x]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: ssh: connect to host x.x.x.x port 22: Operation timed out\r\n", "unreachable": true}

Outros detalhes:

Estou executando playbooks ansible no meu MacBook Pro. A instância EC2 está executando o Ubuntu OS 18.04.

Quando executo ./ec2.py - posso ver que minha instância está sendo impressa. As chaves AWS são salvas na pasta .aws/credentials do diretório inicial.

PS: Esta pergunta pode ser uma duplicata de outras perguntas disponíveis, mas não obtive nenhum insight positivo que corresponda ao meu caso.

Responder1

Foi ruim entender que o script ec2.py, que foi usado, retornava apenas instâncias com IPs privados. E por causa disso, não foi possível conectar-se à instância na porta 22.

No entanto, quando eu estava fazendo ssh, estava usando um IP público ou um nome DNS.

Então, em vez de usar ec2.py, executei o script usando o IP público:

ansible-playbook -i a.b.c.d, playbook-hello-world.yml

abcd – é um IP público de uma instância.

Se por acaso alguém receber o erro abaixo:

TASK [Gathering Facts] ***************************************************************************************************************************************
fatal: [a.b.c.d]: FAILED! => {"changed": false, "module_stderr": "Shared connection to a.b.c.d closed.\r\n", "module_stdout": "/bin/sh: 1: /usr/local/bin/python3: not found\r\n", "msg": "MODULE FAILURE\nSee stdout/stderr for the exact error", "rc": 127}

Por favor, use o comando abaixo:

ansible-playbook -i a.b.c.d, -e 'ansible_python_interpreter=/usr/bin/python3' playbook-hello-world.yml

Apenas certifique-se de que o pythos3 esteja instalado no caminho mencionado da instância, onde você está tentando executar o playbook.

informação relacionada