首页 文章

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

提问于
浏览
2

我刚刚开始使用ansible并创建了一个简单的playbook来在目标服务器上部署nginx . YAML playbook文件(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 回答

  • 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
    

相关问题