Scala配置查找机密
我有一个application.conf文件,其中包含机密(DB的密码等),该机密将作为文件(文件内容将包含实际机密)装入正在运行的pod中。如何调整scala配置库来处理这个问题。即 而不是普通的application.confScala配置查找机密,scala,config,Scala,Config,我有一个application.conf文件,其中包含机密(DB的密码等),该机密将作为文件(文件内容将包含实际机密)装入正在运行的pod中。如何调整scala配置库来处理这个问题。即 而不是普通的application.conf db { user = "username" password = "xxx" } 我想要这样的东西 db { user = "username" p
db {
user = "username"
password = "xxx"
}
我想要这样的东西
db {
user = "username"
password = "${file_location}"
}
在解析文件时,它应该确定需要通过查找文件并加载其内容来解析密钥密码的值
可以编写一个简单的函数来加载此文件的内容,如何将其与scala config无缝集成。即,代码的其余部分将继续使用
config.getString(db.password)
我假设您正在使用HOCON格式的配置和类型安全配置库 我认为它没有这种现成的功能,但作为一种可能的替代方法,您可以查看该功能—您可以将另一个文件的内容包含到您的
应用程序中。conf
:
db {
user = "username"
}
include /path/to/pod.conf //include env specific configuration file
db {
password = "pod_db_pass"
}
并放入/path/to/pod.conf
:
db {
user = "username"
}
include /path/to/pod.conf //include env specific configuration file
db {
password = "pod_db_pass"
}
所以,在加载过程中,这两个文件的内容最终将合并到应用程序中,并且您的最终配置将在路径db.password中包含密码
更新
另一个可能的选项是从文件加载密码并使用方法合并到配置文件中。例如:
import com.typesafe.config._
val passord = "password_from_file"
val passwordConfig = ConfigFactory.parseString(s"db.password=$passord")
val applicationConfig = ConfigFactory.parseString(s"db.user=db_user")// Replace this with `ConfigFactory.load()`
val config = applicationConfig.withFallback(passwordConfig)
println(config)
打印输出结果:
Config(SimpleConfigObject({"db":{"password":"password_from_file","user":"db_user"}}))
Scatie:您使用的是typesafe配置吗?安装在pod中的机密文件只包含密码(它不是配置文件)。不知何故,我需要读取该文件并用该文件的内容替换key db.password的值。我认为这可以在不改变调用config.getString(db.password)
@SathishGopal的现有代码的情况下完成。我又添加了一个选项,也许它更适合您的需要。