Introduction

In today's episode of Ansible Pilot, I'm Luca Berton, and we'll delve into Ansible troubleshooting, focusing on the common error "Failed to connect to the host via SSH: localhost port 22." This error often occurs when testing your code on your local machine using the ansible_connection local parameter.

Understanding the Error

The exact error message you might encounter in the terminal is:

``bash

fatal: [localhost]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via SSH: ssh: connect to host localhost port 22: Connection refused", "unreachable": true}

`

This error is a clear indication that Ansible failed to establish an SSH connection to the localhost on port 22.

Live Demo

Let's jump into a live Playbook to reproduce the Ansible connection failed problem and fix it in the inventory file.

Error Code: ping.yml

`yaml

---

  • name: ping module Playbook

hosts: all

tasks:

- name: test connection

ansible.builtin.ping:

`

Error Execution

Executing the playbook with the error:

`bash

$ ansible-playbook -i inventory ping.yml

PLAY [ping module Playbook] *

TASK [Gathering Facts]

fatal: [localhost]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via SSH: ssh: connect to host localhost port 22: Connection refused", "unreachable": true}

PLAY RECAP **

localhost : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0

`

Fix Code: ping.yml

`yaml

---

  • name: ping module Playbook

hosts: all

tasks:

- name: test connection

ansible.builtin.ping:

`

Fix Execution

Executing the fixed playbook:

`bash

$ ansible-playbook -i inventory ping.yml

PLAY [ping module Playbook] *

TASK [Gathering Facts]

[WARNING]: Platform darwin on host localhost is using the discovered Python interpreter

at /opt/homebrew/bin/python3.10, but future installation of another Python interpreter

could change the meaning of that path. See https://docs.ansible.com/ansible-

core/2.13/reference_appendices/interpreter_discovery.html for more information.

ok: [localhost]

TASK [test connection]

ok: [localhost]

PLAY RECAP **

localhost : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0

``

Links

  • [Local playbooks](https://docs.ansible.com/ansible/latest/user_guide/playbooks_delegation.html)

Conclusion

In conclusion, you now know how to troubleshoot the common Ansible error "Fa