- 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
- (必需) 这是要执行的命令。它可以作为当前工作目录的相对路径或绝对路径提供。它在 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"
}
}
}