web-dev-qa-db-ja.com

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

Ask @PuppetLabsからこれをクロスポストします。 (そこには単に十分なトラフィックがありません。)

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

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

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

4
Aaron Copley

この方法でホイールユーザーを定義すると、それらが追加されますが、クラスからジェーンを削除しても、次の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の外部に追加されたユーザーを削除する唯一の方法でもあります。

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

1
Aaron Copley

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

0
mxroo