Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.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
如何使用随机密码创建用户并使用puppet将其存储到文件中_Puppet - Fatal编程技术网

如何使用随机密码创建用户并使用puppet将其存储到文件中

如何使用随机密码创建用户并使用puppet将其存储到文件中,puppet,Puppet,我想使用随机生成的密码为服务(postgres、rabbitmq…)创建一个用户。然后应将此密码写入主机上的文件。然后,应用程序使用包含env vars的该文件连接到这些服务 我不想把这些密码存储在别处 postgresql::server::db { $name: user => $name, password => postgresql_password($name, random_password(10)), } 然后我想以PG_PASS='the same

我想使用随机生成的密码为服务(postgres、rabbitmq…)创建一个用户。然后应将此密码写入主机上的文件。然后,应用程序使用包含env vars的该文件连接到这些服务

我不想把这些密码存储在别处

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才能使用它