Puppet没有为任何创建的用户设置密码。我尝试了几种方法,似乎没有一种方法可行,我的清单文件是:
user {'test1':
ensure => present,
password => sha1('vagrant'),
shell => '/bin/bash',
}
user {'test2':
ensure => present,
password => md5('vagrant'),
shell => '/bin/bash',
}
user {'test3':
ensure => present,
password => '$6$plwk1mgalbEBBF$ificPYixcMcaotnm8.aayRDa9GDgBp3OgbrFkkU1ZahT/BAf5JvIkR9WjJZNkhIVcsrFkGY/OAs5ZSMvd0Yl3/',
shell => '/bin/bash',
}
vagrant:$6$aqzOtgCM$OxgoM...Ta55l0:0:99999:7:::
test4:!:16183:0:99999:7:::
test3:!:16183:0:99999:7:::
test1:!:16183:0:99999:7:::
test2:!:16183:0:99999:7:::
答案 0 :(得分:1)
你遇到的问题是Puppet没有更新/ etc / shadow文件,但即使它正确地执行了这个操作,方法1仍然无法正常工作。 sha1()和md5()函数不会产生passwd / shadow兼容值,因为这不是它们的用途。生成加密密码比密码的简单散列更复杂。
方法2 应工作,但由于它没有,你还有别的东西在继续。您是否尝试使用调试和/或详细模式应用清单?
我猜你错过了ruby-shadow包,Puppet需要管理这些文件。检查您的软件包提供商和/或gem以确保安装它。
答案 1 :(得分:1)
我今天也在ubuntu 12.04上遇到过这个问题。正如它在puppet docs中所说,并且由orev证实:
请注意,如果您想管理用户密码,则需要安装Ruby的影子密码库(通常称为ruby-libshadow)
我无法让libshadow-ruby1.8软件包运行,即使安装了评论中提到的最新的puppet版本(3.4.3和现在的3.5.1),所以我认为我' d发布对我有用的东西。我在一个新的hashicorp / precise64流浪盒上测试了它:
使用ruby-shadow gem - 它需要make所以也需要apt install build-essential
sudo apt-get install build-essential
sudo gem install ruby-shadow
然后以正确的方式为框mkpasswd
创建一个密码,这是ubuntu 12.04中whois包的一部分
sudo apt-get install whois
然后是木偶用户声明:
user { 'bob':
ensure => present,
password => generate('/bin/sh', '-c', "mkpasswd -m sha-512 ${password} | tr -d '\n'"),
...
}