Puppetを使用してローカルグループメンバーシップを強制するにはどうすればよいですか?


4

これをAsk @ PuppetLabsからクロス投稿してください。(単にそこに十分なトラフィックがありません。)

Augeasを使用して%wheelにユーザーを追加するための例をいくつか見てきました。これらはすべて同じもののバリエーションです。最後にユーザーノードを挿入します。

また、構成管理の外部で追加されたユーザーを削除する必要があります。Puppetがグループを管理するには、Puppetクラスで定義されたユーザーのみが存在し、他のユーザーは削除されます。

単純なSedコマンドをexecする方がはるかに簡単に思えますが、多くの人がexecから離れようとするように言っています。この場合、それはそのような悪い解決策ですか?

回答:


1

この方法でホイールユーザーを定義すると、それらが追加されますが、クラスからジェーンを削除した場合、ジェーンは次のPuppetの実行時にホイールグループから削除されません。

class wheel {
  augeas { "wheelgroup":
    context => "/files/etc/group/wheel",
    changes => [
      'set user[1] bob',
      'set user[2] jane',
    ]
  }
}

これについて私が見つけた唯一の方法は、ホイールグループをパージし、毎回それらを再追加することです。

class wheel {
  augeas { "wheelgroup":
    context => "/files/etc/group/wheel",
    changes => [
      'rm user',
      'set user[1] bob',
      'set user[2] jane',
    ]
  }
}

onlyif定義されたユーザーと一致することを考慮して、各Puppetの実行でこれが実行されないようにしました。ただし、これは、Puppet以外で追加されたユーザーを削除して、%wheelがPuppetのみによって管理されるようにする唯一の方法でもあります。

このソリューションは、再利用のためのパラメータ化にも適していません。


1
Augeasは、ファイル自体ではなく、ファイルのツリー表現を操作します。ツリーが変更されないままの場合、ファイルは変更されないままなので、ノードを削除してから再挿入してもそれほど悪くはありません。
イアン14年

欠点は、実行に約10倍の時間がかかり、パラメータ化にあまり役立たないことです。
アーロンコプリー14年

@AaronCopley Puppet <2.7.19を使用しているのでない限り、遅くはないはずです。パラメータ化に関しては、augeasリソースの周りに定義済みのリソースタイプを作成することをお勧めします。
チャフィンク14年

私たちは2.7.something(EPELビルド)を使用しています。そのため、おそらくあなたが説明する内容に従う必要があります。今後、パフォーマンスが大幅に改善されると聞いて安心です。(3.latestへのアップグレードは、私のプレート上の約1,200のタスクの1つです。)定義済みのリソースタイプの適切な呼び出し。私はPuppetを初めて使用しますが、あなたが何を得ているか知っていると思います。HerculesteamがForgeで公開したもののようなものですか?
アーロンコプリー14年

Annnddd私はあなたがHerculesチームの50%であることに気付きました。:)
アーロンコプリー14年

0

グループメンバータイプを使用して、グループのメンバーを具体的に設定することもできます。forcelocalオプションを使用する必要がある場合があります。


1
このmanages_members機能はgroupaddプロバイダーでは使用できません。属性userを使用してタイプでこれを設定することになっていgroupsますが、これはOPがここで回避しようとしていることです。
チャフィンク14年

彼はまったく間違っていません。ただし、Linuxの場合、これにはカスタムプロバイダーが必要であることに注意してください。
アーロンコプリー14年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.