如何使用随机密码创建用户并使用puppet将其存储到文件中
我想使用随机生成的密码为服务(postgres、rabbitmq…)创建一个用户。然后应将此密码写入主机上的文件。然后,应用程序使用包含env vars的该文件连接到这些服务 我不想把这些密码存储在别处如何使用随机密码创建用户并使用puppet将其存储到文件中,puppet,Puppet,我想使用随机生成的密码为服务(postgres、rabbitmq…)创建一个用户。然后应将此密码写入主机上的文件。然后,应用程序使用包含env vars的该文件连接到这些服务 我不想把这些密码存储在别处 postgresql::server::db { $name: user => $name, password => postgresql_password($name, random_password(10)), } 然后我想以PG_PASS='the same
postgresql::server::db { $name:
user => $name,
password => postgresql_password($name, random_password(10)),
}
然后我想以PG_PASS='the same password'的形式将此密码插入配置文件中,但整个过程应该只在用户不在场的情况下发生。
一个技巧是以某种方式定义自定义类型,如:
define authfile($length=24,$template,$path) {
$passwordfile = "/etc/puppet/private/${::hostname}/${::title}"
$password = file($passwordfile,'/dev/null')
@@exec { "generate-${title}":
command => "openssl rand -hex -out '$passwordfile' 24",
creates => $passwordfile,
tag => 'generated_password'
}
file { $path:
content => template($template);
}
}
在你的木偶大师身上,有这样的东西:
Exec<|| tag = 'generated_password' ||>
Exec
然后,您可以将变量$password
可用的模板名称传递给$template
变量。您需要注意如何定义这些authfile
类型(当它在puppetmaster上创建文件时,您需要注意恶意事实),并且需要在主机上运行一次puppet(以便创建导出的资源),在puppetmaster上运行一次(以便生成机密文件),然后再次在主机上(以便读取机密文件)使其工作
使用自定义函数
另一种解决方案是编写一个自定义函数,
random\u password
,该函数将使用fqdn,并使用存储在puppetmaster上的密码(使用HMAC)对其进行签名,以设定密码种子。这样你就有了一个密码,在不知道秘密的情况下,你就无法猜出密码,也不会有额外的傀儡往返。我自己还没有试过。但看起来和你要找的一模一样
编辑:在试用了trocla之后,我可以告诉你,它就像一个符咒一样有效:-)您需要安装puppet才能使用它