Question

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

Posted August 7, 2019 21.1k views
AnsibleUbuntu 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?

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
2 answers

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

I am getting error with the below yaml file.please help

vi nginx-install.yml


  • name: This is my first Ansible playbook to install nginx hosts: all become: true

tasks:
-name: install nginx
yum:
name: nginx
state: latest

service:
name: nginx
state: started

  • Hello,

    You need to adjust this a little bit to:

    ---
    - hosts: webservers
      become: yes
      tasks:
      - name: Install Nginx Latest
        yum:
          name: nginx
          state: latest
      - name: Start Nginx
        service:
          name: nginx
          state: started
    

    This should work.

    If you get any errors, feel free to share them here.

    Regards,
    Bobby

Submit an Answer