Puppet
puppet nis使用者管理
我開始使用 puppet 來管理我們的 RHEL 伺服器。此時我嘗試設置使用者管理。我們在校園裡執行一個 NIS 環境,所以直到現在我將 +testuser::::: 行添加到 /etc/passwd 文件中,然後通過 NIS 接收使用者資訊。我想要實現的是我有一組可以登錄到每台機器的管理員使用者(admin1、admin2 和 admin3)和一組在每台機器上都不同的使用者(user1、user2 和 user3)。在 passwd 文件的末尾,我需要一個輸入行 +::::::/sbin/nologin 以提供所有使用者資訊,但不授予對他們的訪問權限。
所以 /etc/passwd 在一台機器上看起來像
+admin1:::::: +admin2:::::: +admin3:::::: +user1:::::: +user2:::::: +::::::/sbin/nologin
在另一台機器上
+admin1:::::: +admin2:::::: +admin3:::::: +user1:::::: +user3:::::: +::::::/sbin/nologin
因為管理員使用者是相當靜態的,但普通使用者因係統而異,所以我想在一個模組中聲明管理員使用者,並在每個節點的基礎上聲明普通使用者。
我的第一個問題是,如何編輯 /etc/passwd 文件以添加行。此外,排序正確很重要,因此 nologin 行位於末尾。您知道如何以靈活的方式實現這一目標嗎?
謝謝並恭祝安康
當您將資源添加到清單時, Puppet 將
/etc/passwd
自行編輯user
,例如user { 'admin1': ensure => present, uid => 1003, password => '$6$...', }
現有生產線的訂購充其量是棘手的。Puppet 本身不支持這樣的東西。我的建議是使用這樣的
exec
資源:exec { '/path/to/script-that-moves-nologin-line-to-the-end': unless => '/script/that/returns-true-if-nologins-line-is-currently-at-the-end' }
您希望 Puppet 在將所有使用者資源同步到您的系統後執行該操作。有不同的方法可以解決這個問題,各有優缺點。
假設您的清單不是太複雜,您可能會擺脫該
user
類型的全域預設值。User { before => Exec['/path/to/script-that-moves-nologin-line-to-the-end'] }
請注意,沒有
user
資源會用不同的before
值覆蓋它。其他選擇包括
其中可能是可以想像的。