Ansible troubleshooting - Destination does not exist rc 257
By Luca Berton · Published 2024-01-01 · Category: troubleshooting
Troubleshoot the "Destination does not exist" error (return code 257) in Ansible with Luca Berton on Ansible Pilot! Learn to fix file path issues effectively.

Introduction
Welcome to another episode of Ansible Pilot! I'm Luca Berton, and today we'll delve into Ansible troubleshooting, focusing on the "Destination does not exist" error with return code 257. This error typically occurs when attempting to edit a file that doesn't exist on the target file system. We'll explore the root causes and Playbooknstrate how to resolve this issue using the Ansible lineinfile module.
See also: Ansible SSH with Passwords: Fix sshpass & Authentication (Guide)
Understanding the Error
The fatal error message "Destination does not exist" with return code 257 arises when Ansible attempts to modify a file that is either misspelled or entirely absent on the target system. This error is commonly encountered while configuring SSH settings, particularly when enabling PasswordAuthentication.
I'm Luca Berton, and let's dive into today's Ansible troubleshooting session.
Demo
To illustrate the troubleshooting process, we'll jump into a live Playbook. In this scenario, we'll attempt to edit a configuration file, /etc/ssh/sshd_config2, which is misspelled on our target system.
Error Code
Let's examine the Ansible playbook (destinationdoesnotexist_257_error.yml) triggering the error:
---
- name: PasswordAuthentication enabled
hosts: all
become: true
gather_facts: false
tasks:
- name: ssh PasswordAuthentication
ansible.builtin.lineinfile:
dest: /etc/ssh/sshd_config2
regexp: '^PasswordAuthentication'
line: "PasswordAuthentication yes"
state: present
notify: ssh restart
handlers:
- name: ssh restart
ansible.builtin.service:
name: sshd
state: restarted
Upon execution, the playbook results in a fatal error with return code 257:
$ ansible-playbook -i virtualmachines/demo/inventory troubleshooting/destinationdoesnotexist_257_error.yml
PLAY [PasswordAuthentication enabled] *************************************************************
TASK [ssh PasswordAuthentication] *****************************************************************
fatal: [demo.example.com]: FAILED! => {"ansible_facts": {"discovered_interpreter_python": "/usr/libexec/platform-python"}, "changed": false, "msg": "Destination /etc/ssh/sshad_config2 does not exist !", "rc": 257}
PLAY RECAP ****************************************************************************************
demo.example.com : ok=0 changed=0 unreachable=0 failed=1 skipped=0 rescued=0 ignored=0
Fix Code
Let's correct the playbook to reference the correct file (/etc/ssh/sshd_config) in the fixed version (destinationdoesnotexist_257_fix.yml):
---
- name: PasswordAuthentication enabled
hosts: all
become: true
gather_facts: false
tasks:
- name: ssh PasswordAuthentication
ansible.builtin.lineinfile:
dest: /etc/ssh/sshd_config
regexp: '^PasswordAuthentication'
line: "PasswordAuthentication yes"
state: present
notify: ssh restart
handlers:
- name: ssh restart
ansible.builtin.service:
name: sshd
state: restarted
Fix Execution
Now, when we execute the corrected playbook, it should run successfully:
$ ansible-playbook -i virtualmachines/demo/inventory troubleshooting/destinationdoesnotexist_257_fix.yml
PLAY [PasswordAuthentication enabled] *************************************************************
TASK [ssh PasswordAuthentication] *****************************************************************
changed: [demo.example.com]
RUNNING HANDLER [ssh restart] *********************************************************************
changed: [demo.example.com]
PLAY RECAP ****************************************************************************************
demo.example.com : ok=2 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Verification
To confirm the changes, log in to the target machine and check the configuration file:
$ ssh devops@demo.example.com
[devops@demo ~]$ sudo su
[root@demo devops]# grep 'PasswordAuthentication yes' /etc/ssh/sshd_config
#PasswordAuthentication yes
PasswordAuthentication yes
[root@demo devops]# systemctl status sshd
# Output showing SSH service status
See also: Ansible 'Failed to Connect via SSH localhost:22': Fix Guide
Conclusion
In this Ansible troubleshooting guide, we explored the "Destination does not exist" error with return code 257. By understanding the root causes and applying the correct playbook adjustments, you can overcome this issue in your Ansible automation.
If you found this tutorial helpful, consider subscribing for more Ansible tips and tricks. Happy automating!
Related Articles
• become directives in Ansible • managing inventory in Ansible • idempotent restarts via Ansible handlersCategory: troubleshooting
Watch the video: Ansible troubleshooting - Destination does not exist rc 257 — Video Tutorial