使用 req.basic_auth(Net::HTTP) 在 ruby 中散列密码

hash password in ruby using req.basic_auth(Net::HTTP)

我有一个人偶自定义类型,代码如下:

...
payload = 'items.find({"repo":{"$eq":"' + $node_repo + '"}}).include("name","path","property.*")'
uri = URI.parse("#{$node_instance}/api/search/aql")
http = Net::HTTP.new(uri.host,uri.port)
req = Net::HTTP::Post.new(uri.path)
req["Content-Type"] = "text/plain"
req.basic_auth 'user', 'secret'
req.body = payload
res = http.request(req)
...

由于自定义的类型内容被复制到所有 puppet 代理中,我不希望任何客户端拥有节点凭据,有没有办法散列密码并将其传递给 Net::HTTP 请求?

提前致谢!

您应该将机密和用户设置为您的类型的参数。

Hiera 有一个 eyaml 后端,可以加密数据,因此您可以从 hiera 传递密码。

这是一个关于我们如何从 hiera 传递密码的示例:

foreman::db_password: >
  ENC[PKCS7,MIIBiQYJKoZIhvcNAQcDoIIBejCCAXYCAQAxggEhMIIBHQIBADAFMAACAQAw
  --snip
  ejAKgCACkmEEX/2ijQcTQj9vJf5ytnBlOSYymNbA+/8zcz0dmg==]