简单ansible playbook语法错误(YAML)

简单ansible playbook语法错误(YAML),ansible,ansible-playbook,Ansible,Ansible Playbook,我刚刚开始ansible,并创建了一个简单的剧本,用于在目标服务器上部署nginx。YAML剧本文件(myplaybook.yml)如下所示:- - name: Configure webserver with nginx hosts: webservers sudo: True tasks: - name: install nginx - apt: name=nginx update_cache=yes environment: h

我刚刚开始ansible,并创建了一个简单的剧本,用于在目标服务器上部署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]部分OK-有人能帮忙吗


谢谢

您的YAML有几个问题。首先,
-name
-apt
不应该都有
-
前缀。这使得Ansible认为您有一个任务名为
install nginx
,但没有模块或与之相关的任何其他内容,然后您有第二个任务名为
install nginx,但调用apt模块

第二个问题是缩进。在单词
environment
前面有一个额外的空格,这使YAML认为您正在启动一个新的子元素,而不仅仅是在当前任务中添加属性。因此,您的整个任务应该是这样的(请记住,间距非常关键):


FWIW我可能也会使用多行yaml符号,因为它更易于阅读和维护(例如,将
apt
行拆分为
名称:
更新缓存:
作为单独缩进的行)
tasks:
  - name: install nginx
    apt: name=nginx update_cache=yes
    environment:
      http_proxy: myproxy.com:8088
      https_proxy: myproxy.com:8088