Introduction
In today's episode of Ansible Pilot, I'm Luca Berton, and we'll be diving into Ansible troubleshooting, focusing on the infamous "not a valid attribute for a Play" error. This error can be a stumbling block for many, but fear not – I'll guide you through reproducing, troubleshooting, and fixing this issue.
Unveiling the Error in a Live Demo
The most effective way to explore Ansible troubleshooting is through a live Playbooknstration. Let's reproduce the "not a valid attribute for a Play" error and walk through the steps to resolve it.
Error Code: invalid_play_attribute_error.yml
``yaml
---
- name: file module demo
hosts: all
vars:
myfile: "~/example.txt"
task:
- name: Creating an empty
ansible.builtin.file:
path: "{{ myfile }}"
state: touch
`
Error Execution
Executing the playbook with the error:
`bash
$ ansible-playbook -i Playbook/inventory troubleshooting/invalid_play_attribute_error.yml
ERROR! 'task' is not a valid attribute for a Play
The error appears to be in 'invalid_play_attribute_error.yml': line 2, column 3, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- -
- name: file module demo
^ here
`
Fixing the Code: invalid_play_attribute_fix.yml
`yaml
---
- name: file module demo
hosts: all
vars:
myfile: "~/example.txt"
tasks:
- name: Creating an empty
ansible.builtin.file:
path: "{{ myfile }}"
state: touch
`
Executing the Fixed Code
Executing the fixed playbook:
`bash
$ ansible-playbook -i inventory invalid_play_attribute_fix.yml
PLAY [file module demo] *
TASK [Gathering Facts]
ok: [demo.example.com]
TASK [Creating an empty file] *
changed: [demo.example.com]
PLAY RECAP **
demo.example.com : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
``
You can find the code on [GitHub](https://github.com/lucab85/ansible-pilot/tree/master/troubleshooting).
Conclusion
In summary, you've now gained valuable insights into troubleshooting the "not a valid attribute for a Play" error in Ansible. Understanding the error message, reproducing the issue, and implementing the