我刚开始使用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]部分确定 - 有人可以帮忙吗?
谢谢!
答案 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