何が起こったのか
Windows機で Terraform を利用して Microsoft Azure のリソースを構築しようとしたところ、terraform plan
が Timeout する。
C:\path\to\terraform> terraform plan
Error: timeout while waiting for plugin to start
原因
issue が挙がっていました。
Error: Failed to instantiate provider "azurerm" to obtain schema: timeout while waiting for plugin to start
Windows で TREND MICRO 製品(ウイルスバスター等)を使っている場合に発生するということですかね。
そして golang に原因があり、Terraform 側での対処ではない、と。
解決方法(回避方法)
「mac/linux を調達する」「ウィルスバスターを切る」などの対応を取れるのであればそれでもいいのかもしれませんが、私の場合はそうではなかったので。
Windows機で Linux ベースの Docker コンテナを動かし、そこで Terraform を実行することにします。
ファイル等の準備
フォルダ構成
your-folder-name/
├─ docker/
│ └─ Dockerfile
├─ terraform/
│ ├─ aaa.tf
│ ├─ bbb.tf
│ └ ...
└─ docker-compose.yml
Dockerfile
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
これで解決(回避)できました。