Azure

Terraformのprovider azurermを手動でインストールする。

はじめに

Terraformでちょっと古いコードを実行しようとした場合、azurermが無いと言われることがあります。
また、特定のバージョンを使いたい場合などオフラインの状態で利用したいなどの場合は手動でインストールする必要が出てきます。

そこで、下記から手動でインストールする方法を確認していきます。

GitHub - hashicorp/terraform-provider-azurerm: Terraform provider for Azure Resource Manager
GitHub - hashicorp/terraform-provider-azurerm: Terraform provider for Azure Resource Manager

Terraform provider for Azure Resource Manager. Contribute to hashicorp/terraform-provider-azurerm de ...

github.com

準備

コンパイルする必要があります。

Goとmakeをインストールする

$ curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
$ wget https://go.dev/dl/go1.17.5.linux-amd64.tar.gz
$ rm -rf /usr/local/go && tar -C /usr/local -xzf go1.17.5.linux-amd64.tar.gz

 

$ vi .profile

export PATH=$PATH:/usr/local/go/bin
を追加します。

$ source .profile

反映させます。

$ sudo apt install make

azurermをコンパイルする

$ mkdir -p $GOPATH/src/github.com/hashicorp; cd $GOPATH/src/github.com/hashicorp
$ git clone git@github.com:hashicorp/terraform-provider-azurerm
$ cd $GOPATH/src/github.com/hashicorp/terraform-provider-azurerm
$ make build

~/.terraformrcにazurermを上書きするように記述します。

provider_installation {

  # Use /home/developer/go/bin as an overridden package directory
  # for the hashicorp/azurerm provider. This disables the version and checksum
  # verifications for this provider and forces Terraform to look for the
  # azurerm provider plugin in the given directory.
  dev_overrides {
    "hashicorp/azurerm" = "/home/developer/go/bin"
  }

  # For all other providers, install them directly from their origin provider
  # registries as normal. If you omit this, Terraform will _only_ use
  # the dev_overrides block, and so no other providers will be available.
  direct {}
}

以上で使えるようになります。
この場合、常にこのazurermが利用されることになることにも注意しましょう。

まとめ

通常、Providerは指定することでinitしたときにダウンロードしてきて利用できるようになりますが、
制限のある場所では事前にazurermをインストールしておくことでこれを回避することが可能です。
あまり利用することはないと思いますが覚えておくと損はないと思います。

-Azure