Visual studio code yaml的vs代码编辑器表示需要一个映射,但找到了一个序列

Visual studio code yaml的vs代码编辑器表示需要一个映射,但找到了一个序列,visual-studio-code,ansible,yaml,redhat,Visual Studio Code,Ansible,Yaml,Redhat,我正在ansible角色的tasks文件夹中编辑main.yml 我正在使用RedHat提供的YAML vscode扩展 这是文件的第一部分 # Install Packages - name: Install the Kafka Broker Packages yum: name: "{{item}}-{{confluent.package_version}}" state: latest loop: "{{kafka_broker_packages}}" when

我正在ansible角色的tasks文件夹中编辑main.yml

我正在使用RedHat提供的YAML vscode扩展

这是文件的第一部分

# Install Packages
- name: Install the Kafka Broker Packages
  yum:
    name: "{{item}}-{{confluent.package_version}}"
    state: latest
  loop: "{{kafka_broker_packages}}"
  when: ansible_os_family == "RedHat"

- name: Install the Kafka Broker Packages
  apt:
    name: "{{item}}={{confluent.package_version}}"
    update_cache: yes
  loop: "{{kafka_broker_packages}}"
  when: ansible_os_family == "Debian"
整个文件都有一条红色的弯曲下划线,上面写着:

Expecting a 'map', but found a 'sequence'
我肯定我在做傻事-非常感谢任何帮助

内置Kubernetes和Kedge语法支持

因此,扩展可能会尝试根据Kubernetes或Kedge模式验证YAML文件,但由于您正在为Ansible编写配置文件,验证失败。您可以尝试将yaml.validate设置为false以禁用验证


但是,您最好改用。

VSCode YAML从中提取JSON模式,并尝试将模式与YAML文件关联,这样您就可以在不进行任何配置的情况下进行悬停、自动完成和验证。然而,有时这些模式是不正确的,这里似乎就是这样


您可以在此处提交问题:对架构的任何更新都将出现在vscode yaml中,或者您可以通过将yaml.schemaStore.enable设置为false来禁用架构存储。

此问题的原因是ansible扩展名无法将给定的文件识别为其支持的项。要摆脱它,请尝试编辑VSCode的settings.json以添加以下配置:

"files.associations": {
    "**/*.yml": "ansible"
},
"ansible.validation": true
转到文件>>首选项>>设置 然后在右上角单击打开设置图标。 然后将其添加到设置的json中:

"files.associations": {
   "**/*.yml": "yaml"
}

成功了!!非常感谢。非常感谢。非常感谢。非常感谢。说话太早了。。。禁用的redhat yaml必须先禁用kubernetes。。。然后安装了ansible扩展。。。仍然有红色的Swiggleswell可能是Ansible扩展需要一个剧本,而您的文件不是。我真的不知道扩展,所以我不能告诉你如何修复它。可能返回到禁用验证的redhat扩展?已提交ansible扩展的问题