Как добавить экспериментальный языковой сервер в devcontainer для vscode? - PullRequest
2 голосов
/ 25 января 2020

Я делаю довольно простой c devcontainer для терраформной работы в VSCode на Windows. Каждый раз, когда я запускаю его или перестраиваю контейнер для использования, он предлагает мне установить экспериментальный языковой сервер, где я в итоге выбираю для него последний тег (v0.0.9).

В моих настройках по умолчанию настроены следующие параметры: json file

{
    "terraform.languageServer.enabled": true
}

и мой .devcontainer / devcontainer. json взят и свернут из терраформы Azure контейнер.

// For format details, see https://aka.ms/vscode-remote/devcontainer.json or the definition README at
// https://github.com/microsoft/vscode-dev-containers/tree/master/containers/docker-existing-dockerfile
{
    // See https://aka.ms/vscode-remote/devcontainer.json for format details.
    "name": "DevOps Projects IaC With Terraform",
    "context": "..",
    "dockerFile": "Dockerfile",
    "runArgs": [ 
        "-v", "${env:USERPROFILE}/.ssh:/root/.ssh-localhost:ro", 
        "-v", "${env:USERPROFILE}/.aws:/root/.aws:ro"
    ],

    "postCreateCommand": "mkdir -p ~/.ssh && cp -r ~/.ssh-localhost/* ~/.ssh && chmod 700 ~/.ssh && chmod 600 ~/.ssh/*",

    // Add the IDs of any extensions you want installed in the array below.
    "extensions": ["mauve.terraform"]
}

Как включить экспериментальный языковой сервер в мою конфигурацию build / devcontainer?

1 Ответ

0 голосов
/ 24 апреля 2020

Я пытался найти ответ на этот вопрос некоторое время, для своих собственных целей. Сегодня я решил, что собираюсь выяснить это, и я полагаю, что он работает (установка terraform, LSP и AWS провайдера), используя

# Terraform, LSP and AWS Provider
ENV TERRAFORM_VERSION=0.12.24
ENV TERRAFORM_LSP_VERSION=0.0.10
ENV TERRAFORM_AWS_PROVIDER_VERSION=2.59.0

RUN wget -c https://releases.hashicorp.com/terraform/${TERRAFORM_VERSION}/terraform_${TERRAFORM_VERSION}_linux_amd64.zip \
    && unzip terraform_${TERRAFORM_VERSION}_linux_amd64.zip \
    && mv terraform /usr/local/bin \
    && wget -c https://releases.hashicorp.com/terraform-provider-aws/${TERRAFORM_AWS_PROVIDER_VERSION}/terraform-provider-aws_${TERRAFORM_AWS_PROVIDER_VERSION}_linux_amd64.zip \
    && unzip terraform-provider-aws_${TERRAFORM_AWS_PROVIDER_VERSION}_linux_amd64.zip \
    && mv terraform-provider-aws_v${TERRAFORM_AWS_PROVIDER_VERSION}* /usr/local/bin \
    && echo "provider \"aws\" {}" >> /usr/local/bin/providers.tf \
    && wget -c https://github.com/juliosueiras/terraform-lsp/releases/download/v${TERRAFORM_LSP_VERSION}/terraform-lsp_${TERRAFORM_LSP_VERSION}_linux_amd64.tar.gz -O - | tar -zx \
    && mv terraform-lsp /usr/local/bin \
    && rm terraform*.zip

, потому что я устанавливаю это в / usr / local / bin и я создаю containerUser, у которого не было бы доступа для установки этих компонентов, мне нужно было добавить следующее в раздел settings моего devcontainer. json

        "terraform.indexing": {
            "enabled": false
        },
        "terraform.languageServer": {
            "enabled": true,
            "installCommonProviders": false,
            "pathToBinary": "/usr/local/bin"
        },

Очевидно, что вам нужно внести коррективы, если вы хотите, чтобы другие поставщики или установить их в другом месте, или другие версии terraform, LSP или AWS поставщика, но все они должны быть простыми изменениями.

последние версии можно найти по следующим ссылкам:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...