Ansible
Zed 对 Ansible 的支持由社区维护的 Ansible 扩展提供。
- Tree-sitter: zed-industries/tree-sitter-yaml
- 语言服务器: ansible/vscode-ansible
设置
文件检测
为了避免误处理非 Ansible 的 YAML 文件,Ansible 语言默认不与任何文件扩展名关联。要更改此行为,您可以在项目的 Zed 设置(.zed/settings.json)或您的 Zed 用户设置(~/.config/zed/settings.json)中添加一个 "file_types" 部分,以匹配您的文件夹/命名约定。例如:
"file_types": {
"Ansible": [
"**.ansible.yml",
"**.ansible.yaml",
"**/defaults/*.yml",
"**/defaults/*.yaml",
"**/meta/*.yml",
"**/meta/*.yaml",
"**/tasks/*.yml",
"**/tasks/*.yaml",
"**/handlers/*.yml",
"**/handlers/*.yaml",
"**/group_vars/*.yml",
"**/group_vars/*.yaml",
"**/host_vars/*.yml",
"**/host_vars/*.yaml",
"**/playbooks/*.yml",
"**/playbooks/*.yaml",
"**playbook*.yml",
"**playbook*.yaml"
]
}
您可以根据需要自由修改此列表。
清单(Inventory)
如果您的清单文件是 YAML 格式,您可以:
- 通过在清单文件顶部添加以下注释来附加
ansible-lint清单 JSON 模式:
# yaml-language-server: $schema=https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/inventory.json
- 或者,在您的 Zed 设置中配置 YAML 语言服务器设置,为所有符合您的清单模式的清单文件设置此模式(参考)。
"lsp": {
"yaml-language-server": {
"settings": {
"yaml": {
"schemas": {
"https://raw.githubusercontent.com/ansible/ansible-lint/main/src/ansiblelint/schemas/inventory.json": [
"./inventory/*.yaml",
"hosts.yml",
]
}
}
}
}
},
LSP 配置
默认情况下,以下默认配置会传递给 Ansible 语言服务器。它方便地镜像了 nvim-lspconfig 为 Ansible 语言服务器设置的默认值:
{
"ansible": {
"ansible": {
"path": "ansible"
},
"executionEnvironment": {
"enabled": false
},
"python": {
"interpreterPath": "python3"
},
"validation": {
"enabled": true,
"lint": {
"enabled": true,
"path": "ansible-lint"
}
}
}
}
[!注意] 为了使 linting 生效,请确保已安装
ansible-lint且可在您的 PATH 中找到。
如果需要,上述任何默认设置都可以在您的 Zed 设置文件中的 "lsp" 部分下进行覆盖。例如:
"lsp": {
// Note, the Zed Ansible extension prefixes all settings with `ansible`
// so instead of using `ansible.ansible.path` use `ansible.path`.
"ansible-language-server": {
"settings": {
"ansible": {
"path": "ansible"
},
"executionEnvironment": {
"enabled": false
},
"python": {
"interpreterPath": "python3"
},
"validation": {
"enabled": false, // disable validation
"lint": {
"enabled": false, // disable ansible-lint
"path": "ansible-lint"
}
}
}
}
}
可以传递给服务器的选项/设置的完整列表可在项目页面 此处找到。您可以根据需要自由修改选项值。