已經試過在ubuntu上安裝 puppet libshadow-ruby1.8
class users { package { "libshadow-ruby1.8": ensure => latest, require => Exec['apt-get update'] } user { "ubuntu": ensure => present, uid => '1001', gid => 'admin', shell => '/bin/bash', password => sha1('ubuntu'), managehome => true, require => Package['libshadow-ruby1.8'] } } include users
這麼寫用戶名是創建了, 但是密碼還是沒有
ps: 其實我是在用vagrant, vagrant是默認用戶名想換成ubuntu
你說的「密碼還是沒有」是指你輸入密碼"ubuntu"時驗證不通過嗎?還是說shadow文件裡根本沒有ubuntu這筆紀錄?
我猜是第一種(驗證不通過),shadow檔案中的密碼好像不是sha1()產生的,我不知道你從哪裡看到的這個方法。
我想到的解決方案有:
在puppet class中使用shadow檔案複製出來的密碼先在終端下用useradd, passswd建立用戶,並設定密碼為ubuntu,如圖:
寫個bash腳本,使用expect和passwd命令為新建的用戶設定密碼再去shadow檔案中把加密後的密碼複製出來,用這樣的puppet程式碼建立使用者:
由於passwd命令直接從stdin接收密碼,不能透過passwd ubuntu ubuntu這樣的命令列參數來設定密碼,所以,變通的辦法是自己寫個bash shell(假設叫set_passwd.sh),這個shell腳本從命令列接收明文密碼,再用expect傳送給passwd指令
這樣,你的puppet腳本如下: