我正在使用 Terraform 在 amazon ec2 上设置一个便宜的 postgres 服务器。
我知道在设置 ec2 实例时可以添加用户数据文件。我知道使用 terraform,我可以使用该file(..)
函数提供该用户数据脚本文件。到目前为止一切顺利。
我的问题是我还想自动执行 pg 设置的最后步骤,即在同一用户数据脚本执行期间修改pg_hba.conf
和文件。这可能吗?postgresql.conf
即,如果我pghbaconftpl.conf
在其他 terraform 文件旁边创建一个文件,我可以cat pghbaconftpl.conf > /correct/path/to/pg_hba.conf
在 ec2 用户数据脚本中执行此操作并期望它能正常工作吗?我不知道它如何工作。:-/
一般来说,是否可以注入可以从用户数据脚本启动的其他脚本文件?如果可以,怎么做?
任何帮助均感激不尽。
答案1
您可以使用模板文件函数来创建所需文件的模板。
或者,您可以使用 remote-exec 在远程文件上运行您想要的任何内容
remote-exec 配置程序在创建远程资源后调用该资源上的脚本。这可用于运行配置管理工具、引导到集群等。要调用本地进程,请参阅 local-exec 配置程序。remote-exec 配置程序需要连接,并支持 ssh 和 winrm。
所以你可以
...
provisioner "remote-exec" {
inline = [
"cat pghbaconftpl.conf > /correct/path/to/pg_hba.conf"
]
}
或者您想要在远程实例上运行的任何其他内容。您可以指向一个 shell 脚本,从您的 terraform repo 复制一个文件,将其模板化到远程实例上的某个位置并运行它。
这两种方法取决于您到底想做什么。