简单的剧本语法错误(YAML)

bzo*_*bzo 2 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:
          http_proxy: myproxy.com:8088
          https_proxy: myproxy.com:8088
Run Code Online (Sandbox Code Playgroud)

当我执行:

$ ansible-playbook myplaybook.yml

我得到:-

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

- apt: name=nginx update_cache=yes
       environment:
                  ^
Run Code Online (Sandbox Code Playgroud)

我看不到为什么会发生此错误-主机文件包含[webservers]部分,确定-任何人都可以帮忙吗?

谢谢!

Bru*_*e P 5

您的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
Run Code Online (Sandbox Code Playgroud)