You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 12:08:02