久しぶりのTerraformとバージョンアップ
1年半ぶりくらい。
色々とこまごまかじっては放置を繰り返してるので人生アンラーニングの繰り返しである。
現状確認
0.13.4とか使ってたのでバージョン確認したらout of dateって言われてしまうのだった。
akahige:(git)master:# terraform -version
Terraform v0.13.4
+ provider registry.terraform.io/hashicorp/archive v1.2.2
+ provider registry.terraform.io/hashicorp/aws v2.16.0
Your version of Terraform is out of date! The latest version
is 1.1.9. You can update by downloading from https://www.terraform.io/downloads.html
Terraformのバージョンアップ
tfenvのバージョンアップ
tfenvを使ってたのでこれをまず最新の状態にする。
GitHubからCloneして手動インストールしてあるので
cd ~/.tfenv
git pull
ちなみにググるとlinuxbrewから入れる記事とかヒットするんだけどマジで?
まあパスとか自動で通してくれる分だけ楽とは言えるか。
最新版のTerraformをインストールする
tfenv install 1.1.9
tfenv use 1.1.9
既存のTerraformのディレクトリに.terraform-versionがある場合は書き換える。
echo 1.1.9 > .terraform-version
バージョン確認
akahige:(git)master:# terraform -version
Terraform v1.1.9
on linux_amd64
ヨシ!
Providerのバージョンアップ
main.tfで読み込んでいたものを書き換えなければなと。
awsは2.1.6とか使っていた。
Providerの最新バージョンってどこを見たら分かるのか
Terraform Registryで確認する。
awsは現時点では4.12.1が最新らしい。
AWS Lambda使うのにarchiveとか使ってたのでそれも最新の2.2.0にしておく。
main.tfの書き換え
バージョン書き換えた状態のmain.tf。
terraform {
required_version = "= 1.1.9"
}
provider "aws" {
version = "4.12.1"
profile = "hogehoge-terraform"
region = "ap-northeast-1"
}
provider "archive" {
version = "2.2.0"
}
この状態でterraform planすると
Warning: Version constraints inside provider configuration blocks are deprecated
│
│ on main.tf line 26, in provider "archive":
│ 26: version = "2.2.0"
書き方が古いって言われてしまったので書き換える。
terraform {
required_version = "= 1.1.9"
required_providers {
aws = {
source = "hashicorp/aws"
version = "~> 4.12"
}
archive = {
source = "hashicorp/archive"
version = "2.2.0"
}
}
}
provider "aws" {
profile = "hogehoge-terraform"
region = "ap-northeast-1"
}
terraform initする
main.tfを書き換えて再度terraform plan。
akahige:(git)master:# terraform plan
╷
│ Error: Inconsistent dependency lock file
│
│ The following dependency selections recorded in the lock file are inconsistent with the current configuration:
│ - provider registry.terraform.io/hashicorp/archive: required by this configuration but no version is selected
│ - provider registry.terraform.io/hashicorp/aws: required by this configuration but no version is selected
│
│ To make the initial dependency selections that will initialize the dependency lock file, run:
│ terraform init
terraform initせいと。エラーメッセージが親切でよろしい。
terraform init
ここまででterraform planできるようになった。
でもなんかリソースごとにめちゃめちゃエラーが出るので、AWSプロバイダーのドキュメントを見ながら地道に書き直していく。