- OpenTofu 语言
- 资源
- 配置器
- remote-exec 配置器
remote-exec 配置器
remote-exec
配置器在远程资源创建后调用远程资源上的脚本。这可以用来运行配置管理工具、引导到集群等等。若要调用本地进程,请参阅 local-exec
配置器。remote-exec
配置器需要一个 连接,并支持 ssh
和 winrm
。
重要事项
将配置器作为最后的手段。大多数情况下有更好的替代方案。有关更多详细信息,请参阅 声明配置器。
示例用法
resource "aws_instance" "web" {
# ...
# Establishes connection to be used by all
# generic remote provisioners (i.e. file/remote-exec)
connection {
type = "ssh"
user = "root"
password = var.root_password
host = self.public_ip
}
provisioner "remote-exec" {
inline = [
"puppet apply",
"consul join ${aws_instance.web.private_ip}",
]
}
}
参数参考
支持以下参数
-
inline
- 这是一个命令字符串列表。配置器使用默认的 shell,除非您将 shell 指定为第一个命令(例如,#!/bin/bash
)。您不能与script
或scripts
一起提供它。 -
script
- 这是一个本地脚本的路径(相对或绝对),该脚本将被复制到远程资源,然后执行。它不能与inline
或scripts
一起提供。 -
scripts
- 这是一个本地脚本路径(相对或绝对)列表,这些脚本将被复制到远程资源,然后执行。它们将按照提供的顺序执行。它不能与inline
或script
一起提供。
注意
由于 inline
是通过将命令连接到脚本中实现的,因此 on_failure
仅适用于列表中的最后一个命令。特别是,当 on_failure = fail
(默认行为)时,将允许前面的命令失败,后面的命令也会执行。如果不需要这种行为,请考虑使用 "set -o errexit"
作为第一个命令。
脚本参数
您不能使用此配置器的 script
或 scripts
参数向脚本传递任何参数。如果您想指定参数,请使用 文件配置器 上传脚本,然后使用 inline
调用它。示例
resource "aws_instance" "web" {
# ...
provisioner "file" {
source = "script.sh"
destination = "/tmp/script.sh"
}
provisioner "remote-exec" {
inline = [
"chmod +x /tmp/script.sh",
"/tmp/script.sh args",
]
}
}