Terraform local-exec provisioner用法及代码块解析咨询
Terraform local-exec 与代码解析
一、local-exec provisioner 的用途
- 是Terraform的内置provisioner,作用是在执行Terraform命令的本地机器上运行指定命令,而非在创建的远程云资源(比如EC2实例)上执行
- 主要用于资源创建完成后触发本地后续操作:比如调用配置管理工具(如Ansible)、发送部署通知、生成本地配置文件或日志等
- 区别于
remote-exec:后者是在远程资源上执行命令,而local-exec始终在本地运行
二、代码块含义解析
provisioner "local-exec" { command = "ansible-playbook -u ubuntu --key-file ansible-key.pem -T 300 -i '${self.public_ip},', app.yml" }
逐部分拆解命令参数:
provisioner "local-exec":声明使用本地执行类型的provisioner,告诉Terraform要在本地执行后续命令command字段中的ansible-playbook命令详解:-u ubuntu:指定连接远程主机时使用的SSH用户名为ubuntu--key-file ansible-key.pem:指定SSH身份验证用的私钥文件路径为ansible-key.pem-T 300:设置SSH连接超时时间为300秒(5分钟),适配远程主机初始化较慢的场景-i '${self.public_ip},':通过Terraform插值表达式${self.public_ip}获取当前资源(比如EC2实例)的公网IP,作为Ansible的目标主机;末尾的逗号是Ansible要求的单个主机清单格式,避免被识别为组名app.yml:指定要执行的Ansible Playbook文件,该文件包含了对远程主机的具体配置逻辑
内容的提问来源于stack exchange,提问作者PoppaDynasty
相关产品推荐
相关产品推荐

