深夜の怠惰な技術ブログ

日々の技術的な話題などを徒然なるままに

IntelliJ IDEAにおけるLive Templatesでの快適なTerraformライフ

はじめに

僕はIaC(Infrastructure as Code)については多くの場合に関してTerraformを利用します。 そのような中で同じようなコードを書くことが多々あります。AWS Lambda Functionを作成する際のAWS IAM Roleなどはその最たる例かもしれません。 今までは恥ずかしい話ですが、粛々と同じようなコードを書き続けていました。皆様はこのような場合にスニペットを用意したいと思います。そして、IntelliJ IDEAにはLive Templatesという機能があります。

Live Templatesの設定

Templateグループの作成

IntelliJ IDEAには多くのプログラミング言語・ツールに対応したTemplateグループが存在していますが、Terraform用のTemplateグループは存在しませんでした。 そのために、まずは以下の画面キャプチャのように[preference] > [Editor] > [Live Templates]に移動して、Terraform用のTemplateグループの作成を実施します。

Templateグループの新規作成
Templateグループ名の指定

Templateの登録

Terraform用Templateグループが作成できたら、早速Templateを登録していきます。 Templateグループの新規作成と同様の画面から、以下の画面を参考に今度はLive Templateを選択します。

Templateの登録

Live Templateの設定について、入力しなければならないのはAbbreviationTemplate textDefineです。なお、Descriptionという該当Live Templateの説明文を記載する項目がありますが、こちらはOptionalですので特に設定しなくても問題ありません。

Live Templateの設定

まずはAbbreviationですが、これは呼び出すときの名前になります。例えば今回の例では、Lambda関数用のIAM Roleを作成するためのLive Templatesを想定しているため、IAM_Role_Lambdaという値にしています。 次に、Template textですが、これがLive Templatesを利用した際に記述されるコードとなります。僕の場合には以下の内容を記載しています。

resource "aws_iam_role" "" {
  name = ""
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Effect = "Allow"
        Action = ["sts:AssumeRole"]
        Principal = {
          Service = "lambda.amazonaws.com"
        }
      }
    ]
  })
  managed_policy_arns = ["arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"]
}

最後に、Defineですが、これは本Live Templatesを呼び出すことのできる言語などを設定することになります。今回の対象はTerraformとなるため、Otherを選択しますが、言語ごとに設定できるので皆さまの用途に応じて選択してください。

すべての設定を完了

前述の設定を完了すると以下のようにsuggestionされます。選択いただくことで、Template textで設定した内容が記述されます。

デモ利用シーン

さいごに

いかがでしたでしょうか。今回は少し開発環境におけるTipsを記載させていただきました。 皆さまのお役に少しでも立てれば幸いです。