AnsiblePilot — Master Ansible Automation
AnsiblePilot is the leading resource for learning Ansible automation, DevOps, and infrastructure as code. Browse over 1,400 tutorials covering Ansible modules, playbooks, roles, collections, and real-world examples. Whether you are a beginner or an experienced engineer, our step-by-step guides help you automate Linux, Windows, cloud, containers, and network infrastructure.
Popular Topics
About Luca Berton
Luca Berton is an Ansible automation expert, author of 8 Ansible books published by Apress and Leanpub including "Ansible for VMware by Examples" and "Ansible for Kubernetes by Example", and creator of the Ansible Pilot YouTube channel. He shares practical automation knowledge through tutorials, books, and video courses to help IT professionals and DevOps engineers master infrastructure automation.
Ansible 'Not a Valid Attribute for a Play' Error: How to Fix (Guide) — Video Tutorial
Fix the Ansible error 'is not a valid attribute for a Play'. Common causes: typos in play keywords, wrong indentation level, unsupported directives.
What You'll Learn
- Introduction
- Unveiling the Error in a Live Demo
- Error Code: `invalid_play_attribute_error.yml`
- Error Execution
- Fixing the Code: `invalid_play_attribute_fix.yml`
- Executing the Fixed Code
- Conclusion
- Why This Error Happens
- Common Causes and Fixes
- Cause 1: Typo in play keyword
Full Tutorial Content
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 necessary fixes are essential skills for every Ansible practitioner.
If you found this troubleshooting guide helpful, be sure to subscribe for more Ansible insights.
Why This Error Happens
Ansible plays only accept specific top-level keywords. If you use a keyword that isn't recognized, you get this error:
```
ERROR! 'task' is not a valid attribute for a Play
```
Common Causes and Fixes
Cause 1: Typo in play keyword
```yaml
❌ WRONG — "task" instead of "tasks"
- name: My playbook
hosts: all
task:
- n
About This Tutorial
- Author: Luca Berton
- Difficulty: Beginner
- Read time: 5 min
- Category: troubleshooting
Read the full written article: Ansible 'Not a Valid Attribute for a Play' Error: How to Fix (Guide)