Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala配置查找机密_Scala_Config - Fatal编程技术网

Scala配置查找机密

Scala配置查找机密,scala,config,Scala,Config,我有一个application.conf文件,其中包含机密(DB的密码等),该机密将作为文件(文件内容将包含实际机密)装入正在运行的pod中。如何调整scala配置库来处理这个问题。即 而不是普通的application.conf db { user = "username" password = "xxx" } 我想要这样的东西 db { user = "username" p

我有一个application.conf文件,其中包含机密(DB的密码等),该机密将作为文件(文件内容将包含实际机密)装入正在运行的pod中。如何调整scala配置库来处理这个问题。即 而不是普通的application.conf

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的现有代码的情况下完成。我又添加了一个选项,也许它更适合您的需要。