Ansible

Zed 对 Ansible 的支持由社区维护的 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"
        }
      }
    }
  }
}

可以传递给服务器的选项/设置的完整列表可在项目页面 此处找到。您可以根据需要自由修改选项值。