Terraform
Terraform(英語) は、開発者と運用チームが手動設定ではなく宣言型構成ファイルを使用してクラウドのリソースとインフラストラクチャを定義、管理、プロビジョニングできるようにする、インフラストラクチャアズコードツールです。
Terraform を使用すると、仮想マシン、ネットワーク、ストレージなどのインフラストラクチャリソースをコードで記述できます。 Terraform は、これらのリソースを自動的に作成および管理します。 このアプローチにより、インフラストラクチャのバージョン管理、レビュー、再現が容易になり、開発、テスト、本番環境全体で一貫性のある環境を維持できるようになります。
Terraform および HCL プラグインをインストール
この機能は、インストールして有効にする必要がある Terraform と HCL(英語) プラグインに依存しています。
Ctrl+Alt+S を押して設定を開き、 を選択します。
Marketplace タブを開き、 Terraform と HCL プラグインを見つけて、 インストール をクリックします (プロンプトが表示されたら、IDE を再起動します)。
Terraform 実行パスを指定する
実行構成を使用して IDE から Terraform コマンドを実行するには、マシンに Terraform がインストールされている必要があります。
Ctrl+Alt+S を押して設定を開き、 を選択します。
ほとんどの場合、RubyMine は Terraform 実行可能ファイルへのパスを自動的に検出します。 IDE が実行ファイルのバージョンとパスを検出しない場合は、 検出とテスト をクリックしてください。
マシンに Terraform がインストールされていない場合は、 インストール をクリックします。

必要に応じて、 Terraform 実行可能ファイルパス フィールドに Terraform へのパスを手動で指定できます。
Terraform ファイルの作成
RubyMine は複数の Terraform ファイルタイプ用の事前設定済みテンプレートを提供します。 ファイルを作成するには、 プロジェクト ツールウィンドウでディレクトリを右クリックし、 を選択します。 これにより、使用可能な Terraform ファイルテンプレートから選択できるダイアログが開きます。

ファイル拡張機能 | ファイルテンプレート | 説明 |
|---|---|---|
.tf | 構成 | Terraform 構成ファイル。 |
.tfcomponent.hcl | コンポーネント | Terraform コンポーネントファイル。 |
.tfdeploy.hcl | デプロイ | Terraform デプロイファイル。 |
.tftest.hcl | テスト | Terraform テストファイル。 |
Terraform の構成には、複数の環境や相互接続されたコンポーネントが含まれることがよくあります。 セットアップは Terraform ワークスペースおよび Terraform スタックとして整理でき、どちらも RubyMine に対応しています。
Terraform スタック
Terraform Stacks では .tfstack.hcl 、 .tfcomponent.hcl 、 .tfdeploy.hcl 拡張機能を使用します。
RubyMine はスタック専用構造のコーディング支援を提供します。 IDE ではスタックルートブロックとそのプロパティの補完、必須プロパティの自動挿入、そして不足している必要なプロパティのハイライトを行います。
Terraform テスト
RubyMine はインフラストラクチャコードのテスト用に Terraform テストフレームワークをサポートしています。
RubyMine は Terraform テストファイル( .tftest.hcl )やテストから参照可能な再利用可能モック定義( .tfmock.hcl )の認識とコーディング支援を行います。
Terraform テンプレートファイル
RubyMine は、通常 .tftpl 拡張子を使用する Terraform テンプレートファイルのサポートを提供します。
ライブテンプレートを使用するには、Terraform テンプレートファイルに if または for と入力し始めます。

テンプレートファイルへ移動
Terraform ファイルでは、 templatefile(英語) 関数を使用してテンプレートを挿入できます。 RubyMine を使用すると、Terraform ファイルからテンプレートファイルへの素早い移動が可能です。
Terraform ファイルで、
templatefile関数を見つけます。キャレットをテンプレートファイル名に置き、 Ctrl+B を押します。
テンプレートデータの言語を選択
テンプレートファイルの拡張子 (file.<lang>.tftpl) で言語が指定されている場合、この言語がデータ言語として使用されます。 例: file.js.tftpl では、JavaScript が使用されます。 データ言語が指定されていない場合 (たとえば、 file.tftpl )、テンプレートファイルはプレーンテキストとして認識されます。
ファイルの構文をその通りに認識させたい場合、データ言語を選択(または検出済みのものを変更)できます。
エディターでファイルタブを右クリックし、 <Language> テンプレートデータ言語を次のように変更する (たとえば、 JavaScript テンプレートデータ言語を次のように変更する または プレーンテキストテンプレートのデータ言語 を) を選択します。
または、ファイル内の Alt+Enter (コンテキストアクションの表示) を押して、 テンプレートデータ言語の選択 を選択します。
開いた言語リストから、言語を選択します。
Terraform 変数
Terraform の変数定義ファイルは通常、 .tfvars 拡張機能を使用します。 これらのファイルを使って Terraform 構成で宣言した変数の値を設定します。
Terraform ファイルを編集
IDE は、コアとなる Terraform 要素とプロバイダ定義の概念に関するスマートなコードインサイトを提供することで、生産性を維持し、インフラストラクチャコードをより迅速に、より少ない注意散漫で記述できるように支援します。 これには、次の機能が含まれます。
設定 ダイアログ (Ctrl+Alt+S) の ページと ページで色設定をカスタマイズできます。
RubyMine は Terraform ファイル内で既知のプロバイダ、プロバイダ関数、リソース、データソース、アクション、引数などの補完を提供します。

プロバイダ要件を設定する際、IDE は
required_providersブロック内のsourceやバージョンなどの関連属性とともに、利用可能なプロバイダを提案します。 これにより、Terraform 仕様に従って要件を定義できます。 プロバイダ要件の詳細については、 Terraform のドキュメント(英語)を参照してください。Terraform スタックファイルでは、RubyMine がスタックルートブロックとそのプロパティの補完を提供します。 必要なプロパティは自動的に挿入され、不足しているプロパティは IDE によってハイライトされます。
.tfcomponent.hcl ファイルでは、RubyMine はプロバイダ宣言や構成、
componentおよびstackブロックで使用されるモジュール変数とプロバイダの補完をサポートします。ローカルで実行されるディープラーニングモデルを使い、コード行全体を補完できます。

ページの 設定 ダイアログ (Ctrl+Alt+S) で、Terraform の行全体コード補完を無効にすることができます。
要素とそのすべての使用箇所の名前を変更するには、 Shift+F6 を押します。
構造 ツールウィンドウを使用して、Terraform ファイルをすばやくプレビューおよび移動します。

ツールウィンドウは、 または Alt+7 を押すことで使用できます。
引数の上にカーソルを合わせると、その引数に関するクイックドキュメントが表示されます。

詳細については、 Shift+F1 を押して、Terraform レジストリ (このドキュメントのソース) を開くこともできます。
Terraform インスペクションを利用して、重複、競合、非推奨、欠落している要素、未解決の参照、不明なリソースなどを検出できます。

の 設定 ダイアログ (Ctrl+Alt+S) で、すべての Terraform、インスペクションを確認できます。
コーディング支援には、ブレースマッチング Ctrl+Shift+M 、コードの折りたたみ Ctrl+NumPad +/Ctrl+NumPad - 、行コメント Ctrl+/ およびブロックコメント Ctrl+Shift+/ の追加、Terraform ファイルへの コピーライトテキストの挿入も含まれます。
Terraform を実行
Terraform と HCL プラグインは、Terraform 専用の実行構成を提供します。 これらの実行構成を使用すると、引数の追加や環境変数の受け渡しなど、 terraform コマンドの実行をカスタマイズできます。
ガターアイコンを使用して Terraform を実行する
Terraform ファイルで、ガターの
をクリックします。
開いたウィンドウで、実行プランを作成する場合は プラン を選択し、すでに Terraform プランがありそれを適用する場合は 適用 を選択します。

このディレクトリに対して Terraform 初期化手順が実行されていない場合は、 実行 ガターアイコンに警告サインが表示されます。 この場合、RubyMine は terraform plan または terraform apply を実行する前に terraform init コマンドの実行を提案します。
ガターアイコンから Terraform を実行すると、一時的な実行構成が作成されます。 実行ウィジェットで をクリックし、 構成の保存 を選択すると、永続的な構成として保存できます。
Terraform 実行構成を手動で作成する
に進みます。 または、 Alt+Shift+F10 を押してから 0 を押します。
新規構成を追加 ボタン (
) をクリックし、 Terraform の入力を開始します。

実行構成のタイプを選択します:
テラフォーム初期化 は
terraform initコマンドを実行しますTerraform 検証 は
terraform validateコマンドを実行しますTerraform プラン は
terraform planコマンドを実行しますTerraform 適用 は
terraform applyコマンドを実行しますTerraform 破壊 は
terraform destroyコマンドを実行しますTerraform は、他の Terraform コマンドを提供することができます。
コマンド リストで、Terraform コマンドを選択します。 このリストに含まれていないコマンドを実行するには、 カスタム を選択し、 プログラム引数 フィールドに指定します。
実行構成に名前を付け、必要に応じて作業ディレクトリを変更します。 環境変数を使用する場合は、 環境変数 フィールドに指定するか、ファイルを選択してそこから変数を使用します。
Terraform コードを再フォーマットする
RubyMine を使うことで、Terraform ファイルにコードスタイルを適用できます。 RubyMine にはフォーマットツールが 2 つ含まれています:
Terraform フォーマッタを使用する
Terraform フォーマットツール (terraform fmt) は Terraform コードスタイル(英語)に基づいています。 .tf および .tfvars ファイルに適用されます。
Terraform フォーマットツールを使用するには、 Terraform をインストールするが必要です。
メインメニューで へ移動します。
または、 Ctrl+Alt+Shift+F を押します。
Terraform フォーマッター terraform fmt はファイル全体に適用されますが、 RubyMine フォーマッターは選択したコードの一部にも適用できます。
RubyMine フォーマッタを使用する
RubyMine フォーマッターは、RubyMine コードスタイルが Terraform と HCL プラグインによって提供されているものに基づいています。 このコードスタイルは、IDE 設定の でカスタマイズできます。
.tf および .tfvars に加えて、 .hcl ファイルにも適用されます。
ファイルを再度フォーマットするには、エディターでファイルを開き、メインメニューで に移動します。 または、 Ctrl+Alt+Shift+L を押します。
コードの一部を再フォーマットするには、コードの一部を選択し、メインメニューで に移動します。 または、 Ctrl+Alt+L を押します。
Terraform プロバイダーのメタデータをリフレッシュ
Terraform と HCL プラグインには特定のバージョンのプロバイダーメタデータが付属しており、既知のプロパティやインスペクションの補完などのコーディング支援が可能になります。
プロジェクトで異なるプロバイダーバージョンを使用する場合 (たとえば、 required_providers ブロックで変更した後)、 terraform init を実行してプロジェクトを初期化します。
で ローカルメタデータを自動的にビルドするオプションが有効化されている場合、RubyMine はローカルプロバイダーメタデータを自動的に再生成します。 このオプションが無効になっている場合は、メタデータを手動でリフレッシュできます。
プロバイダーのメタデータを手動でリフレッシュする
プロジェクトを初期化した後、次のいずれかを実行します。
Terraform 構成ファイルを開き、エディター内の任意の場所を右クリックします。
プロジェクト ツールウィンドウ Alt+1 を開き、Terraform 構成ファイルを右クリックします。
コンテキストメニューから を選択します。

拡張設定
- Terraform ドキュメントを自動的にダウンロードする
デフォルトで、RubyMine は Terraform プロパティのクイックドキュメントを Terraform Registry からダウンロードします。 ネットワークやパフォーマンスの問題が発生した場合はこれを無効化でき、その場合 RubyMine は代わりにメタデータから説明を表示します。 このような説明の提供可否はリソース開発者に依存します。
- ローカルメタデータを自動的にビルドする
有効化されている場合、
terraform init実行後に RubyMine はローカルプロバイダーメタデータを自動的に再生成します。 これにより、コーディング支援が構成ファイルで定義されたプロバイダーバージョンを利用できます。- 変数を深く検索する
Terraform で変数を使う場合、RubyMine はプロジェクト内のすべての Terraform ファイルでその変数定義をチェックします。 RubyMine でルートディレクトリ(
.terraform.lock.hclがあるディレクトリ)内のファイルのみ確認したい場合は、チェックボックスをオフにしてください。
Terraform コードスタイル設定
Terraform 固有のコードスタイル設定は で使用できます。
- フォーマット時にプロパティを揃える
プロパティと値の揃え方を選択してください: イコール記号で揃える、値で揃える、または何も揃えない。
- 行コメンターのシンボル
Ctrl+/ を押したときに単一行コメントに使用するシンボルを選択します。
- 補完時にプロバイダーを自動的にインポートする
リソース名を入力したら、現在のファイルにプロバイダー要件を挿入します。
required_providersブロックが不足している場合は追加してください。- 整形に 'terraform/tofu fmt' を起動する
を呼び出したときに Terraform(または OpenTofu)フォーマッターを実行します。
