【问题标题】:How do I add Pulumi to my GitHub Codespaces / VSCode .NET devcontainer?如何将 Pulumi 添加到我的 GitHub Codespaces / VSCode .NET devcontainer?
【发布时间】:2021-12-20 12:33:46
【问题描述】:

我想通过 VS Code .devcontainer 使用 Pulumi .NET / C# 开发和部署 IaC。如何将此功能添加到环境中?

【问题讨论】:

    标签: visual-studio-code .net-core pulumi vscode-devcontainer


    【解决方案1】:

    我将 https://github.com/pulumi/pulumi-docker-containers/blob/main/docker/dotnet/Dockerfile 中的构建容器步骤包含到 .devcontainer/Dockerfile 中:

    ARG DOTNET_VARIANT="3.1"
    ARG PULUMI_VERSION=latest
    ARG INSTALL_NODE="true"
    ARG NODE_VERSION="lts/*"
    
    # --------------------------------------------------------------------------------
    
    FROM debian:11-slim AS builder
    RUN apt-get update -y && \
        apt-get upgrade -y && \
        apt-get install -y \
        curl \
        build-essential \
        git
    
    RUN if [ "$PULUMI_VERSION" = "latest" ]; then \
        curl -fsSL https://get.pulumi.com/ | bash; \
        else \
        curl -fsSL https://get.pulumi.com/ | bash -s -- --version $PULUMI_VERSION ; \
        fi
    
    # --------------------------------------------------------------------------------
    
    FROM mcr.microsoft.com/vscode/devcontainers/dotnetcore:0-${DOTNET_VARIANT}
    
    RUN if [ "${INSTALL_NODE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
    
    COPY --from=builder /root/.pulumi/bin/pulumi /pulumi/bin/pulumi
    COPY --from=builder /root/.pulumi/bin/*-dotnet* /pulumi/bin/
    
    ENV PATH "/pulumi/bin:${PATH}"
    

    我用这个.devcontainer/devcontainer.json控制这个过程:

    // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
    // https://github.com/microsoft/vscode-dev-containers/tree/v0.203.0/containers/alpine
    {
        "name": "C# (.NET)",
        "build": {
            "dockerfile": "Dockerfile",
            "args": {
                "DOTNET_VARIANT": "3.1",
                "PULUMI_VERSION": "latest",
                "INSTALL_NODE": "true",
                "NODE_VERSION": "lts/*"
            }
        },
        "features": {
            "azure-cli": "latest"
        },
        // Set *default* container specific settings.json values on container create.
        "settings": {},
        // Add the IDs of extensions you want installed when the container is created.
        "extensions": [
            "ms-dotnettools.csharp"
        ],
        // Use 'forwardPorts' to make a list of ports inside the container available locally.
        // "forwardPorts": [],
        // Use 'postCreateCommand' to run commands after the container is created.
        // "postCreateCommand": "uname -a",
        // Replace when using a ptrace-based debugger like C++, Go, and Rust
        // "runArgs": [ "--init", "--cap-add=SYS_PTRACE", "--security-opt", "seccomp=unconfined" ],
        "runArgs": [
            "--init"
        ],
        // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
        "remoteUser": "vscode"
    }
    

    请注意,Rebuild 将需要一段时间,一旦在 @987654326 中指示 success,您可能必须重新加载 devcontainer @。

    在那之后pulumi login 和例如pulumi new azure-csharp 应该在容器上工作。

    【讨论】:

      猜你喜欢
      • 2022-08-17
      • 2021-10-31
      • 2021-02-18
      • 1970-01-01
      • 2019-05-13
      • 2023-01-18
      • 2022-10-25
      • 1970-01-01
      • 2021-04-02
      相关资源
      最近更新 更多