由于在Windows机器上构建Azure资源会发生超时错误,所以可以使用Docker来解决该问题

发生了什么事情?

在Windows计算机上使用Terraform来构建Microsoft Azure资源时,尝试运行terraform plan时出现超时的情况。

C:\path\to\terraform> terraform plan

Error: timeout while waiting for plugin to start

造成这个结果的事情的因素。

出现了一个问题。
错误:无法实例化提供程序“azurerm”以获取架构:等待插件启动的超时。

如果你在Windows上使用趋势科技产品(如病毒克星),会发生这种情况吗?这是由Golang引起的,并且不是在Terraform方面解决的。

解决方法(避免方法)

如果你能够解决”获取Mac / Linux”和”关闭病毒杀手”等问题,那或许也可以。但对于我的情况并非如此。
我决定在Windows机器上运行基于Linux的Docker容器,并在其中执行Terraform。

文件等的准备

文件夹结构

your-folder-name/
 ├─ docker/
 │   └─ Dockerfile
 ├─ terraform/
 │   ├─ aaa.tf
 │   ├─ bbb.tf
 │   └ ...
 └─ docker-compose.yml

Dockerfile:Docker镜像描述文件。

FROM alpine:3.7

ARG terraform_version="0.13.1"

# install terraform.
RUN wget https://releases.hashicorp.com/terraform/${terraform_version}/terraform_${terraform_version}_linux_amd64.zip && \
    unzip ./terraform_${terraform_version}_linux_amd64.zip -d /usr/local/bin/

# set time-zone=JST
RUN apk --update add tzdata && \
    cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime && \
    apk del tzdata && \
    rm -rf /var/cache/apk/*

# create workspace.
COPY ./terraform /root/terraform

# move to workspace
WORKDIR /root/terraform

docker-compose.yml 可以使用以下方式进行释义:

version: "3"
services:
  terraform:
    container_name: "terraform"
    image: local/terraform
    build:
      context: ./
      dockerfile: docker/Dockerfile
    volumes:
      - ./terraform:/root/terraform

进行

# Dockerイメージをビルド。初回だけでOK。
> docker-compose build

# コンテナ起動&ログイン
> docker-compose run --rm terraform

### 以降は、Dockerコンテナの中での作業になる。

# Terraform を実行
$ terraform init
$ terraform plan
$ ...

# 終了時。Dockerコンテナから抜ける。
$ exit

这样就搞定了(避免了)。

bannerAds