web-dev-qa-db-ja.com

Puppet:UNIXユーザーとグループを作成および管理する方法

先週、私は人形の学習に全力を尽くしました。今、私は精神的なバッファオーバーフローに悩まされており、この獣を飼いならすことができるという自信はほとんどありません。私は多くの注釈付きの例に出くわしましたが、それらの無数のバリエーションが原因で、推奨される(最近の)Puppetスタイルと規則、およびアドホックな「私にとってはうまくいく」アプローチを区別できません。ベーシックレベルのものみたいなので我慢できません。

そう。 Puppetを使用してグループとユーザーを管理します。ユーザーのプライマリグループは自分のユーザー名と同じです。他のグループは、LANログインの場合はlan、管理者の場合はwheel、ユーザーはShell任意のノード上のシェル、ユーザーの場合はmail、さまざまなデーモンの場合はdaemons。管理者ログインはすべてのノードで行われ、さらに悪いことに、LANログインはシェルログインでもかまいません。

私が理解していることから、ある時点で実現される仮想定義を利用する場合は、ユーザーを複数回定義しても問題ありません。すばらしいですね。それでは、ユーザーの複数のグループでどのように機能するのでしょうか。ボブはLANノードとノードbeastie.wanの両方を使用できるとします。彼のログインthebobは、lanusers.ppでgroups => ["lan"]を使用して、shellusers.ppでgroups => ["Shell"]を使用して2回定義されていますか?ボブが自分のLANパスワードを自分のシェルパスワードとは別にしたい場合はどうなりますか?

私が現在使用しているコードには仮想定義がありません。ユーザーはハードコーディングされた単一のインクルージョンです。ある時点で virtualsを使用した例 に遭遇しましたが、これは、Puppetがプライマリグループと最初に定義した必要なグループを作成するようにコードを拡張する方法がわからないため、行き詰まっている場所です次に、それらのグループにユーザーを参加させます。

正しい。ちゃんと手がかりをください。

13
drumfire

今、私は精神的なバッファオーバーフローに悩まされており、この獣を飼いならすことができるという自信はほとんどありません。

まず、リラックスしてください。私は、Puppetなどの学習曲線のあるものを初めて使用する場合、圧倒されて多くのことを成し遂げることができなくなるのは非常に簡単であることを学びました。

彼のログインthebobは、groups => ["lan"]のlanusers.ppとgroups => ["Shell"]のshellusers.ppで2回定義されていますか?

いいえ。 1つの場所で仮想的に定義します(多分users.pp)とgroups => ['Shell', 'lan',]

ノードで、必要なユーザーを認識します。たとえば、node beaminすべてのShellユーザーが必要です:

node beamin {
    Account <| groups == 'Shell' |>
}

ボブが自分のLANパスワードを自分のシェルパスワードとは別にしたい場合はどうなりますか?

次に、Bobはおそらく、異なるログイン名を持つ2つの異なるアカウントを取得するはずです。

6

Puppetは、複雑なユーザー/グループ管理には適していません。 LDAPのようなものをデプロイする方がはるかに良いでしょう-私がそれを嫌うのと同じくらい、Puppetを倒して提出するよりもずっとうまくいきます。

3
womble