Terraform EC2 实例导入 - 用户数据不同

kaf*_*fka 5 amazon-web-services terraform

我正在尝试将现有 EC2 实例导入 Terraform。我已获取 EC2 实例用户数据,并将其添加到我的 TF 配置文件中,例如

    user_data               = <<EOF
<powershell>
& $env:SystemRoot\System32\control.exe "intl.cpl,,/f:`"UKRegion.xml`""
& tzutil /s "GMT Standard Time" 
Set-Culture en-GB
</powershell>
EOF
Run Code Online (Sandbox Code Playgroud)

资源导入正常,但当我运行时,terraform plan我得到 TF 想要销毁并重新创建实例,因为 user_data 中的“更改”“强制新资源”。

user_data: "946f756af0df239b19f86a72653e58dcc04c4b27" => "811599030dc713b18c3e35437a82b35095190a81" (forces new resource)
Run Code Online (Sandbox Code Playgroud)

我尝试将用户数据从 EC2 控制台复制并粘贴到 TF 文件中,但这不起作用。这是可能吗?

Pre*_*onM 1

根据这个 github问题,看起来这是 terraform 如何将 user_data 解释为“计算”值的问题。似乎有一个解决方法。

  • 首先使用计划命令运行计划/应用周期,包括命令行上的额外参数:
    -target=template_file.userdata-consul。这将告诉 Terraform 执行更新模板文件所需的最少工作,这应该
    使您的启动配置保持不变。
  • 现在再次运行计划,由于 template_file 现在已经重新创建,它应该按照预期将解析的模板插入到 user_data 中,并且不应该有差异,因为“新”模板渲染应该与“旧”模板渲染相同。