简单的ansible playbook语法错误(YAML)

时间:2015-07-15 13:36:48

标签: ansible ansible-playbook

我刚开始使用ansible并创建了一个简单的playbook来在目标服务器上部署nginx。 YAML剧本文件(myplaybook.yml)如下所示: -

- name: Configure webserver with nginx
  hosts: webservers
  sudo: True
  tasks:
    - name: install nginx
    - apt: name=nginx update_cache=yes
       environment:
          http_proxy: myproxy.com:8088
          https_proxy: myproxy.com:8088

执行时: -

$ ansible-playbook myplaybook.yml

我得到: -

错误:加载YAML脚本nginx-ansible.yml时出现语法错误 注意:错误实际上可能出现在此位置之前:第7行,第23列

- apt: name=nginx update_cache=yes
       environment:
                  ^

我不明白为什么会出现这种错误 - 主机文件包含[webservers]部分确定 - 有人可以帮忙吗?

谢谢!

1 个答案:

答案 0 :(得分:4)

你的YAML有几个问题。首先,- name- apt不应都有-前缀。这使得Ansible认为你有一个名为install nginx的任务但没有任何模块或与之相关的任何其他任务,那么你有第二个任务没有名字但是调用了apt模块。

第二个问题是缩进。你在单词environment前面有一个额外的空间,这使得YAML认为你正在开始一个新的子元素而不仅仅是为当前任务添加属性。所以你的整个任务应该看起来像这样(并记住间距是至关重要的):

tasks:
  - name: install nginx
    apt: name=nginx update_cache=yes
    environment:
      http_proxy: myproxy.com:8088
      https_proxy: myproxy.com:8088