- OpenTofu言語
- リソース
- プロビジョナー
- local-execプロビジョナー
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"
}
}
}