私は現在、Puppetのセットアップを移動してHieraをさらに使用しようとしています。これに関して、Hieraでユーザーを作成したいのですが、階層を上に移動するときにこれを行う方法に問題があります。
シナリオは、すべてのインストールに含まれる基本ユーザーのセットが必要な場合です。また、ノードの異なるサブセットに対してのみ特定のユーザーを追加する必要がある場合もあります。データセンターやノードに固有の場合もあります。
そこで、次の設定について考えました。
hiera.yaml:
:hierarchy:
- "nodes/%{::trusted.certname}"
- "datacenter/${::datacenter}"
- "common"
users.pp:
class profile::users {
$user_accounts = hiera('user_accounts')
create_resources(user, $user_accounts)
}
そしてcommon.yaml:
user_accounts:
bob:
comment: "Bob"
managehome: true
次に、階層を上に移動します。これに関して私が目にする主な問題は次のとおりです。
managehome: true
を設定し、毎回明示的に書き込むのではありません。たまに無効にしたいかもしれません。user_accounts
がある場合、common.yamlのuser_accounts
ハッシュが上書きされるため、エントリを複製する必要があります。 Hieraで deep merging に出くわしましたが、これが実際に使用されているのか、それともベストプラクティスなのか疑問に思います。また、最初の問題は解決されないため、hiera.yamlにmerge_behavior
を設定する必要があります。これは避けたいものです。では、Puppetを使用してユーザー管理が実際にどのようにうまく行われているかについての洞察を誰かが持っていますか?ありがとう:)
タイプ定義で各ユーザーのデフォルト属性を実装します。
define user($managehome = true) { ... }
はい、マージを使用する必要がありますが、hieraデータで指定するのではなく、 hiera_array
function 必要なデータのルックアップを実行します。
SSHキーは、データセット内のもう1つの属性であり、user
タイプがシステムに適切に設定する必要があります。