Terraform Provisioners
本文缩写(英文全称与中文含义)
| 缩写 |
英文全称/名称 |
中文含义 |
| CI |
Continuous Integration |
持续集成 |
| CLI |
Command-Line Interface |
命令行接口 |
| SSH |
Secure Shell |
安全远程登录协议 |
| WinRM |
Windows Remote Management |
Windows 远程管理 |
Provisioner 在资源生命周期中执行命令或传输文件,无需安装额外 provider。
| Provisioner |
执行位置 |
用途 |
| local-exec |
运行 Terraform 的机器或 CI runner |
调用本地脚本、CLI |
| remote-exec |
通过 SSH / WinRM 连接的目标机器 |
执行远程命令或脚本 |
| file |
从 Terraform 执行端传输到目标机器 |
上传文件或目录 |
使用原则#
- 优先使用 provider resource、cloud-init 或配置管理工具;Terraform 无法追踪命令产生的状态变化。
- 默认在所属资源创建时执行,不会在每次
apply 或普通更新时执行。
- 示例使用 Terraform 1.4+ 内置的
terraform_data 承载命令,triggers_replace 变化时替换该资源并重跑。
- 默认失败会中止操作;创建阶段失败还会将所属资源标记为 tainted,后续 plan 通常会安排替换。命令应支持重复执行。
when = destroy 在销毁前执行;直接删除整个资源配置块不会执行其中的销毁命令。