Ansible Playbook语法错误求助:YAML文件加载失败
Ansible Playbook语法错误求助:YAML文件加载失败
嘿,我来帮你搞定这个问题~你遇到的这个YAML加载失败、提示“did not find expected key”的错误,根源是缩进不符合YAML的层级要求,Ansible对YAML的缩进可是相当严格的,层级错了就会解析失败。
先看你出错的地方:你写的- name: Start Nginx这一行,缩进和第一个任务里的apt模块参数(比如name: nginx)对齐了,这就导致它被当成了第一个Install Nginx任务的一部分,而不是一个独立的新任务,YAML解析器自然就懵了,找不到它该对应的层级key,直接报错。
给你修正后的完整Playbook,你对比着看:
--- # YAML documents begin with the document separator --- - name: Install and Start Nginx hosts: all become: true tasks: - name: Install Nginx apt: name: nginx state: present - name: Start Nginx service: name: nginx state: started # Three dots indicate the end of a YAML document ...
核心的修正点就是:把- name: Start Nginx这一行的缩进调整到和第一个任务的- name: Install Nginx同一级别,这样它就会被识别为tasks下面的第二个独立任务。另外我帮你把模块参数的缩进统一成了2个空格(其实用4个也可以,关键是整个文件里要保持缩进规则统一,别混着用)。
再提醒下你Ansible YAML的关键缩进规则:
tasks下面的每个独立任务,都要以- name: ...开头,所有这些任务的缩进级别必须一致- 每个任务里的模块(比如
apt、service),要比对应的- name:缩进2/4个空格 - 模块的参数(比如
name: nginx),要比模块名(apt)再缩进2/4个空格
这样调整后,你的Playbook应该就能正常执行,完成Nginx的安装和启动啦~
备注:内容来源于stack exchange,提问作者nagesh naga
相关产品推荐
相关产品推荐

