web-dev-qa-db-ja.com

Puppet:特定のパッケージが存在する場合にのみAugeasを実行します

Augeasを使用して「/ etc/inittab」を変更したいのですが、これはパッケージ「sysvinit」がインストールされている場合にのみ発生するはずです。そのパッケージはPuppetの管理下にありません(そして管理されてはなりません)。

Augeasの「onlyif」は、Augeasのもの以外のものをチェックできないようです。 Augeasはファイルが存在するかどうかを確認できません。

カスタムファクトを作成せずにこれを達成する方法はありますか?

4
Larsen

Augeasプロバイダー および 制限ファクト に書き込み、パッケージの存在を確認します。

要約すると:

  • trueまたはfalse(またはパッケージバージョン)を使用して、sysvinit_packageファクトを記述します。
  • ファクトに限定されたinittabのタイプとプロバイダーを記述します。

注:augeasproviders APIは、augeasprovidersモジュールの外部にプロバイダーを簡単に作成するために再作成されています。たとえば、 shellvarスタンドアロンプ​​ロバイダー (今のところPoC、APIはおそらく最終的にこのように機能します)を参照してください。

または、プロバイダーを作成する代わりにaugeasタイプを使用する場合(ただし、これをお勧めします)、ファクトを作成してPuppet DSLで使用すると、augeasがインストールされていないときにsysvinitリソースを宣言しないようにできます。

2
ℝaphink

恐ろしい代替策は、augeasを実行しているexecリソースのaugtoolリソースタイプを破棄し、onlyifコマンドでパッケージをチェックすることです。

私はカスタムファクトで行きます。

1
Shane Madden