本文へ移動

local-execプロビジョナー

local-exec プロビジョナーは、リソースが作成された後にローカル実行ファイルを呼び出します。これは、リソース上ではなく、OpenTofuを実行しているマシン上でプロセスを呼び出します。リソース上でコマンドを実行するには、remote-exec プロビジョナーを参照してください。

プロビジョナーが実行されるときにリソースは完全に作成されますが、動作可能な状態であるという保証はありません。たとえば、sshdなどのシステムサービスは、コンピューティングリソースではまだ開始されていない可能性があります。

使用例

コードブロック
resource "aws_instance" "web" {
# ...

provisioner "local-exec" {
command = "echo ${self.private_ip} >> private_ips.txt"
}
}

引数リファレンス

サポートされている引数は次のとおりです。

  • command - (必須) 実行するコマンドです。現在の作業ディレクトリに対する相対パス、または絶対パスとして指定できます。シェルで評価され、環境変数またはOpenTofu変数を使用できます。

  • working_dir - (オプション) 指定した場合、commandが実行される作業ディレクトリを指定します。現在の作業ディレクトリに対する相対パス、または絶対パスとして指定できます。ディレクトリは存在する必要があります。

  • interpreter - (オプション) 指定した場合、コマンドの実行に使用されるインタープリター引数のリストです。最初の引数はインタープリター自体です。現在の作業ディレクトリに対する相対パス、または絶対パスとして指定できます。残りの引数は、コマンドの前に追加されます。これにより、「/bin/bash」、「-c」、「echo foo」という形式のコマンドラインを作成できます。interpreterが指定されていない場合、システムOSに基づいて適切なデフォルトが選択されます。

  • environment - (オプション) 実行されるコマンドの環境を表すキーと値のペアのブロックです。現在のプロセスの環境を継承します。

  • when - (オプション) 指定した場合、OpenTofuがコマンドを実行するタイミングを指定します。たとえば、when = destroyは、関連付けられたリソースが破棄されるときにプロビジョナーが実行されることを指定します。詳細は破壊時プロビジョナーを参照してください。

  • quiet - (オプション) trueに設定した場合、OpenTofuは実行するコマンドをstdoutに出力せず、「Suppressed by quiet=true」を出力します。コマンドの出力は、いずれの場合でも出力されます。

インタープリターの例

コードブロック
resource "terraform_data" "example1" {
provisioner "local-exec" {
command = "open WFH, '>completed.txt' and print WFH scalar localtime"
interpreter = ["perl", "-e"]
}
}
コードブロック
resource "terraform_data" "example2" {
provisioner "local-exec" {
command = "Get-Date > completed.txt"
interpreter = ["PowerShell", "-Command"]
}
}
コードブロック
resource "aws_instance" "web" {
# ...

provisioner "local-exec" {
command = "echo $FOO $BAR $BAZ >> env_vars.txt"

environment = {
FOO = "bar"
BAR = 1
BAZ = "true"
}
}
}