我使用vagrant +木偶来configurationprecise32 VirtualBox服务器以编程方式添加用户。 我有一切工作,但我似乎无法自动设置密码由puppet。 这是我的木偶剧本:
package { "ruby-shadow": name => "libshadow-ruby1.8", ensure => installed, } user { 'biff': home => '/home/biff', shell => '/bin/bash', uid => 201, managehome => 'true', password => '$6$kxHLEuHW$zHRAZcVLu0XzukqU79bT.PEg./FfcloJiWmlH2rf.Lmnyke7uAaHkQTXvErqikWeraSiHFBwDSMDV4hRImqjr7.', groups => ['sudo', ], requires => Package['ruby-shadow'], }
为了得到散列$6$kx... ,我login到虚拟机,运行sudo passwd biff来设置系统的密码,然后把散列密码(第二个字段在/etc/shadow )复制到上面的puppet脚本。 删除用户重置密码并重新运行木偶脚本后,密码未设置,我根本无法login:
[precise32]$ sudo grep biff /etc/shadow biff:!:15862:0:99999:7:::
事实上,它看起来像用户biff已被locking在系统外( / etc / shadow解释 )。 我是否拥有正确的哈希集作为passwordvariables? 你怎么知道这是什么?
看起来好像一种方法可能是在设置密码之后运行usermod ,但是这似乎与首先使用puppet的整个点相反。 有任何想法吗?
您使用的stream浪盒可能使用/opt/vagrant_ruby/lib/1.8/ ruby库,而不使用任何系统安装的ruby库。 在/etc/profile.d/vagrant_ruby.sh检查你的stream浪盒是否有文件。 如果是这样,这就是重写使用哪个puppet命令,然后决定使用哪个ruby库。 尝试删除该文件;)如果事情仍然有效(在系统中安装puppet和libshadow-ruby之后),用vagrant package重新包装盒子,并重新用作precise32盒子。
我确信usr /opt/vagrant_ruby有很多很好的理由,但是它缺less一个非常重要的库,并且在使用其他工具的情况下使用ruby库时会有点混乱。
木偶将不能设置密码,除非存在libshadow gem,因为这是需要使用影子密码的。 IIRC有关于提供者的错误消息。 libshadow需要安装mkmf.rb ,可以在包libruby2.0,ruby1.9.1-dev或ruby1.8-dev中find (取决于你的ruby版本)
我有我的清单: package { "ruby1.9.1-dev": ensure => installed; "libshadow": ensure => installed, require => Package['ruby1.9.1-dev'], provider => gem; } package { "ruby1.9.1-dev": ensure => installed; "libshadow": ensure => installed, require => Package['ruby1.9.1-dev'], provider => gem; }