我正在编辑 ansible 角色的任务文件夹中的 main.yml。
我正在使用Red Hat的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'
我确定我在做一些愚蠢的事情 - 任何帮助都非常感谢
此问题的原因是 ansible 扩展 (https://marketplace.visualstudio.com/items?itemName=vscoss.vscode-ansible( 无法将给定文件识别为其支持的项目。要摆脱它,请尝试编辑 VSCode 的 settings.json 以添加以下配置:
"files.associations": {
"**/*.yml": "ansible"
},
"ansible.validation": true
该扩展的自述文件说:
具有内置的 Kubernetes 和 Kedge 语法支持。
因此,扩展可能会尝试根据 Kubernetes 或 Kedge 模式验证您的 YAML 文件,但由于您正在为 Ansible 编写配置文件,因此会失败。您可以尝试将yaml.validate
设置为"false"
以禁用验证。
但是,您可能最好改用Ansible扩展。
转到File >> preferences >> settings
然后在右上角单击open settings(json)
图标。 然后将其添加到设置的 json 中:
"files.associations": {
"**/*.yml": "yaml"
}
VSCode-YAML 从 http://schemastore.org/json/中提取 JSON 模式,并尝试将架构与 yaml 文件相关联,以便您可以悬停、自动完成、验证,而无需任何配置。但是,有时这些架构不正确,这里似乎就是这种情况。
您可以在此处提交问题:https://github.com/SchemaStore/schemastore,对架构的任何更新都将出现在 vscode-yaml 中,或者您可以通过将"yaml.schemaStore.enable"设置为 false 来禁用架构存储。