跳至主要内容

local-exec 配置器

local-exec 配置器在创建资源后调用本地可执行文件。这会在运行 OpenTofu 的机器上调用一个进程,而不是在资源上。请参阅 remote-exec 配置器 以在资源上运行命令。

请注意,即使资源将在运行配置器时完全创建,也不能保证它处于可操作状态 - 例如,计算资源上可能尚未启动 sshd 等系统服务。

示例用法

代码块
resource "aws_instance" "web" {
# ...

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

参数参考

支持以下参数

  • command - (必需) 这是要执行的命令。它可以作为当前工作目录的相对路径或绝对路径提供。它在 shell 中进行评估,可以使用环境变量或 OpenTofu 变量。

  • working_dir - (可选) 如果提供,则指定执行 command 的工作目录。它可以作为当前工作目录的相对路径或绝对路径提供。该目录必须存在。

  • interpreter - (可选) 如果提供,则这是用于执行命令的解释器参数列表。第一个参数是解释器本身。它可以作为当前工作目录的相对路径或绝对路径提供。其余参数在命令之前追加。这允许构建形如 "/bin/bash","-c","echo foo" 的命令行。如果未指定 interpreter,则将根据系统操作系统选择合理的默认值。

  • environment - (可选) 表示执行命令的环境的键值对块。继承当前进程环境。

  • when - (可选) 如果提供,则指定 OpenTofu 何时执行命令。例如,when = destroy 指定配置器将在关联资源被销毁时运行。有关详细信息,请参阅 销毁时配置器

  • quiet - (可选) 如果设置为 true,则 OpenTofu 不会将要执行的命令打印到标准输出,而是打印 "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"
}
}
}