- 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
- これはコマンド文字列のリストです。最初のコマンドにシェルを指定しない限り(例:#!/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",
]
}
}