web-dev-qa-db-ja.com

Hieraによるユーザー管理の最良の方法

私は現在、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

次に、階層を上に移動します。これに関して私が目にする主な問題は次のとおりです。

  • 各ユーザーのデフォルト属性を実装するにはどうすればよいですか?たとえば、この例では、allユーザーにmanagehome: trueを設定し、毎回明示的に書き込むのではありません。たまに無効にしたいかもしれません。
  • 階層のさらに上位にuser_accountsがある場合、common.yamlのuser_accountsハッシュが上書きされるため、エントリを複製する必要があります。 Hieraで deep merging に出くわしましたが、これが実際に使用されているのか、それともベストプラクティスなのか疑問に思います。また、最初の問題は解決されないため、hiera.yamlにmerge_behaviorを設定する必要があります。これは避けたいものです。
  • ここにすべてのユーザーのsshキーを挿入するにはどうすればよいですか?最も良い解決策は、sshキーを属性としてユーザーアカウントに追加することです。

では、Puppetを使用してユーザー管理が実際にどのようにうまく行われているかについての洞察を誰かが持っていますか?ありがとう:)

1
Hellstorm

タイプ定義で各ユーザーのデフォルト属性を実装します。

define user($managehome = true) { ... }

はい、マージを使用する必要がありますが、hieraデータで指定するのではなく、 hiera_array function 必要なデータのルックアップを実行します。

SSHキーは、データセット内のもう1つの属性であり、userタイプがシステムに適切に設定する必要があります。

1
womble