简单ansible playbook语法错误(YAML)
我刚刚开始ansible,并创建了一个简单的剧本,用于在目标服务器上部署nginx。YAML剧本文件(myplaybook.yml)如下所示:-简单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
- 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