Ask @PuppetLabsからこれをクロスポストします。 (そこには単に十分なトラフィックがありません。)
Augeasを使用して%wheelにユーザーを追加する例をいくつか見てきました。これらはすべて同じもののバリエーションです。最後にユーザーノードを挿入します。
私がする必要があるのは、構成管理の外部で追加されたユーザーも削除することです。 Puppetがグループを管理するには、Puppetクラスで定義されているユーザーのみが存在し、他のユーザーは削除されている必要があります。
単純なSedコマンドを実行する方がはるかに簡単なようですが、多くの人がexecから離れようとするように言っています。この場合、これは悪い解決策ですか?
この方法でホイールユーザーを定義すると、それらが追加されますが、クラスからジェーンを削除しても、次の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の実行ごとにこれが実行されないようにすることを検討しました。ただし、これは、%wheelがPuppetによってのみ管理されるようにするために、Puppetの外部に追加されたユーザーを削除する唯一の方法でもあります。
このソリューションは、再利用のためのパラメータ化にも適していません。
グループメンバータイプ を使用して、グループのメンバーを具体的に設定できる場合があります。 forcelocalオプションを使用する必要がある場合があります。