如何通过Terraform将AWS SSM存储的数据库密码传入XML文件?
解决方案
你需要调整两个地方来实现将SSM参数中的密码注入到XML配置文件中:
1. 修正Terraform中templatefile的参数传递
当前代码里传递给templatefile的db_password是SSM参数的整个对象,我们需要的是参数的实际值。修改locals块如下:
# My DB Password that is stored on AWS data "aws_ssm_parameter" "db_password" { name = "terraform/db-password" } # Creating a locals value from my dbconfig.xml file locals { dbconfig = templatefile("${path.module}/../../templates/dbconfig.xml", { db_password = data.aws_ssm_parameter.db_password.value }) }
关键是添加.value,以此获取SSM参数对应的实际密码字符串。
2. 修改XML模板的变量引用语法
Terraform模板文件使用${变量名}的语法引用传入的变量,因此需要把dbconfig.xml里硬编码的db_password替换为模板变量:
<?xml version="1.0" encoding="UTF-8"?> <jira-database-config> <name>defaultDS</name> <database-type>postgresaurora96</database-type> <jdbc-datasource> <driver-class>org.postgresql.Driver</driver-class> <username></username> <password>${db_password}</password> <connection-properties>tcpKeepAlive=true;socketTimeout=240</connection-properties> </jdbc-datasource> </jira-database-config>
完成以上两处修改后,Terraform渲染模板时会自动将SSM中的数据库密码替换到XML的<password>标签内。
内容的提问来源于stack exchange,提问作者Legion_of_boom__
相关产品推荐
相关产品推荐

