Augeasを使用して「/ etc/inittab」を変更したいのですが、これはパッケージ「sysvinit」がインストールされている場合にのみ発生するはずです。そのパッケージはPuppetの管理下にありません(そして管理されてはなりません)。
Augeasの「onlyif」は、Augeasのもの以外のものをチェックできないようです。 Augeasはファイルが存在するかどうかを確認できません。
カスタムファクトを作成せずにこれを達成する方法はありますか?
Augeasプロバイダー および 制限 を ファクト に書き込み、パッケージの存在を確認します。
要約すると:
true
またはfalse
(またはパッケージバージョン)を使用して、sysvinit_package
ファクトを記述します。inittab
のタイプとプロバイダーを記述します。注:augeasproviders
APIは、augeasproviders
モジュールの外部にプロバイダーを簡単に作成するために再作成されています。たとえば、 shellvarスタンドアロンプロバイダー (今のところPoC、APIはおそらく最終的にこのように機能します)を参照してください。
または、プロバイダーを作成する代わりにaugeas
タイプを使用する場合(ただし、これをお勧めします)、ファクトを作成してPuppet DSLで使用すると、augeas
がインストールされていないときにsysvinit
リソースを宣言しないようにできます。
恐ろしい代替策は、augeas
を実行しているexec
リソースのaugtool
リソースタイプを破棄し、onlyif
コマンドでパッケージをチェックすることです。
私はカスタムファクトで行きます。