Ansible playbook error: mapping values are not allowed in this context

August 7, 2019 485 views
Ansible Ubuntu 18.04

I am trying to play with Ansible a little bit and I’ve created a test playbook but it is failing for some reason and I can’t figure out why. I’ve tested the connectivity between my control node and the worker node but when I try to run my playbook I get this error:

ERROR! Syntax Error while loading YAML.
  mapping values are not allowed in this context

The error appears to have been in '/root/ansible/setup.yaml': line 9, column 12, but may
be elsewhere in the file depending on the exact syntax problem.

The offending line appears to be:

- name: Apache started
    service:
           ^ here

I can not see anything wrong with the service part in my playbook. Here’s what I currently have:

---
- hosts: webservers
  vars:
    my_service: apache2
    desired_state: started

  tasks:
- name: Apache started
    service:
      name:  "{{ my_service }}"
      state: "{{ desired_state }}"

Has anyone seen this error before?

1 Answer
bobbyiliev MOD August 7, 2019
Accepted Answer

Hello,

The playbook looks good, there’s only a slight indentation error, Yaml is very strict about the indentations and the spacing.

You need to make sure that you have two spaces before the - name part of your playbook. So it would look something like this:

---
- hosts: webservers
  vars:
    my_service: apache2
    desired_state: started

  tasks:
  - name: Apache started
    service:
      name:  "{{ my_service }}"
      state: "{{ desired_state }}"

Hope that this helps!
Regards,
Bobby

  • That fixed it, thank you. Maybe I should go through a Yaml course before diving into Ansible any further.

Have another answer? Share your knowledge.