从 Puppet 事实中访问层次数据
Access hiera data from within a Puppet fact
作为自定义 Puppet 事实的一部分,我需要进行数据库查询以获取一些动态数据。然后,这些数据将被 Puppet 清单中其他地方的某些资源使用。但是,要建立数据库连接,我需要能够读取存储在 hiera(密码)中的一些加密数据。但是我不确定如何从 Ruby 中访问这些数据。也许这甚至是不可能的,因为事实是 运行 代理端,而编译目录时使用的 hiera 是 运行 服务器端。但是,我目前假设我可以使用如下方式访问 hiera:
Facter.add(:metadata) do
setcode do
database_password = Hiera.lookup('profile::runner::agent::database_password')
# make the DB connetion and run the query...
make_database_query_and_return_result_as_hash(database_password, Facter.value(:hostname))
end
end
是否可以通过这种方式从事实中访问 hiera 数据?目前有一个很长的反馈循环来测试这个(我们正在努力减少),所以我很感激被指出正确的方向。
Facter 运行s 在 Puppet 运行 开始的目标节点上,它将事实发送到 Puppet 服务器,这是完成任何 hiera 查找的地方。所以这永远行不通,因为事实是 运行 在任何 hiera 查找之前和在不同的机器上。
这样做的方法不是将其作为事实而是作为自定义函数,自定义函数是 ruby 代码,即编目时 Puppet 服务器上的 运行汇编。
https://puppet.com/docs/puppet/7/lang_write_functions_in_puppet.html
如果您正在查询 Puppet 数据库以获取您已经在本地主机上的信息,那么身份验证应该很容易。 https://puppet.com/docs/puppetdb/6/api/query/tutorial.html
这个锻造模块可能会做你想要的https://forge.puppet.com/modules/dalen/puppetdbquery
作为自定义 Puppet 事实的一部分,我需要进行数据库查询以获取一些动态数据。然后,这些数据将被 Puppet 清单中其他地方的某些资源使用。但是,要建立数据库连接,我需要能够读取存储在 hiera(密码)中的一些加密数据。但是我不确定如何从 Ruby 中访问这些数据。也许这甚至是不可能的,因为事实是 运行 代理端,而编译目录时使用的 hiera 是 运行 服务器端。但是,我目前假设我可以使用如下方式访问 hiera:
Facter.add(:metadata) do
setcode do
database_password = Hiera.lookup('profile::runner::agent::database_password')
# make the DB connetion and run the query...
make_database_query_and_return_result_as_hash(database_password, Facter.value(:hostname))
end
end
是否可以通过这种方式从事实中访问 hiera 数据?目前有一个很长的反馈循环来测试这个(我们正在努力减少),所以我很感激被指出正确的方向。
Facter 运行s 在 Puppet 运行 开始的目标节点上,它将事实发送到 Puppet 服务器,这是完成任何 hiera 查找的地方。所以这永远行不通,因为事实是 运行 在任何 hiera 查找之前和在不同的机器上。
这样做的方法不是将其作为事实而是作为自定义函数,自定义函数是 ruby 代码,即编目时 Puppet 服务器上的 运行汇编。 https://puppet.com/docs/puppet/7/lang_write_functions_in_puppet.html
如果您正在查询 Puppet 数据库以获取您已经在本地主机上的信息,那么身份验证应该很容易。 https://puppet.com/docs/puppetdb/6/api/query/tutorial.html
这个锻造模块可能会做你想要的https://forge.puppet.com/modules/dalen/puppetdbquery