我想在任何预先创建的云上使用terraform在现有实例中运行脚本。该实例是手动创建的,有没有办法将我的脚本推送到此实例并使用 terraform 运行它? 如果是,那么我如何使用 terraform 连接到实例并推送我的脚本并运行它?
我相信ansible是轻松实现这一目标的更好选择。
参考这里给出的示例 - https://docs.ansible.com/ansible/latest/modules/script_module.html
- 创建一个
.tf
文件并描述您已经存在的资源(例如 VM( - 使用地形导入导入现有事物
- 如果这是一个 VM,则使用文件配置程序将脚本添加到远程计算机,并使用 remote-exec 运行它 - 这两个步骤都在 Terraform 文件中描述,无需手动更改
- 运行
terraform plan
以查看预期的更改是否正常,然后terraform apply
计划是否正常
Terraform的核心任务是创建,更新和销毁长期存在的基础设施对象。它通常不关心在其部署的计算实例中运行的软件。相反,它通常希望它部署的每个对象都表现为一种专用的"设备",要么是云供应商提供的托管服务,要么是因为您在 Terraform 之外准备了自己的计算机映像,旨在在系统启动时立即启动相关工作负载。然后,Terraform 仅向系统提供查找周围基础设施并与之交互所需的任何配置信息。
使用 Terraform的一种不太理想的方法是使用其配置器功能在创建映像后立即对其进行后期自定义,但这被认为是最后的手段,因为 Terraform 的生命周期并未设计为包括对此类工作流的强大支持,并且它往往需要在主系统与其编排层之间进行更多的耦合。
Terraform 没有用于将任意文件推送到现有虚拟机中的机制。如果您的虚拟机在创建后需要持续的配置维护(通过 Terraform 或其他方式(,那么这是传统配置管理软件(如 Ansible、Chef、Puppet 等(的用例,而不是 Terraform。