Question

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

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?


Submit an answer


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Sign In or Sign Up to Answer

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.

Bobby Iliev
Site Moderator
Site Moderator badge
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

check the ansible version and upgrade it and check python version also as stack require higher version of ansible and python

Hello, I am getting a similar error with td-agent file. I checked on various pages but not clear yet.

ERROR: ERROR! We were unable to read either as JSON nor YAML, these are the errors we got from each: JSON: Expecting value: line 1 column 1 (char 0)

Syntax Error while loading YAML. did not find expected <document start>

The error appears to be in '/address/to/path/log-aggregator.yml: be elsewhere in the file depending on the exact syntax problem.

<store>
    @type s3
    s3_bucket {{ s3_bucket_name }}
    s3_region {{ s3_bucket_region }}
    s3_object_key_format %{path}/name%{time_slice}.json.%{file_extension}
    path platform/core_name_log_v1_1m/%Y/%m/%d/%H
    time_slice_format %Y%m%d_%H%M
    store_as gzip
    include_tag_key true
    tag_key tag
    buffer_type file
    buffer_path /var/log/td-agent/cello/core/name
    buffer_queue_limit 512
    buffer_chunk_limit 2m
    flush_interval 10s
    utc
    grant_full_control id=jh11qfhj67676le1p092f2xxuxxxxxxxxxxxxx3b5609t2ff6d77771020129356
    check_object false
  </store>

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Become a contributor for community

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

DigitalOcean Documentation

Full documentation for every DigitalOcean product.

Resources for startups and SMBs

The Wave has everything you need to know about building a business, from raising funding to marketing your product.

Get our newsletter

Stay up to date by signing up for DigitalOcean’s Infrastructure as a Newsletter.

New accounts only. By submitting your email you agree to our Privacy Policy

The developer cloud

Scale up as you grow — whether you're running one virtual machine or ten thousand.

Get started for free

Sign up and get $200 in credit for your first 60 days with DigitalOcean.*

*This promotional offer applies to new accounts only.