Puppet で手順的なステップを使用することは一般的に好ましくないことは承知していますが、Veritas が管理するクラスター化されたアプリケーションを展開するために Puppet を使用しているため、rpm インストールが呼び出される前に実行する必要がある特定の一連の手順があります。
現在、Veritas クラスタを手動でフリーズしてアプリケーションのフェイルオーバーを試行しないようにし、Puppet を実行して RPM をインストールし (必要に応じてアプリケーションを停止します)、Puppet にアプリケーションを起動しないように指示します。次に、アプリケーションを手動で起動して Veritas をフリーズ解除します。最後に、ステータスを確認します。
Veritas の手順を自動化して、Puppet を実行するだけで済むようにしたいと思います。これらの手順は、実稼働環境でのみ実行されます。他のすべての環境では、RPM インストールを呼び出すだけです。さらに複雑なことに、何も変更されていない場合は、これらの手順を実行したくありません。
このようなことをするにはどのような方法が好ましいでしょうか?ステージの実行しかし、既存のコードを大幅にリファクタリングする必要があるようです。
誰かがこの問題の対処方法について何かアイデアをくれるかどうか知りたいです。
答え1
問題の説明に基づいて、プランを使用するか、すべてを exec またはスクリプトに投入して順序を指定する必要があります。Puppet マニフェストは、そのままでは、ユースケースを処理できるほど装備されていません。
例は次のようになります。
exec { 'do veritas upgrade' :
onlyif => '${lookup(veritas_version)} is greater than /usr/bin/veritas --version',
exec => 'freeze && stop && install && start && unfreeze && verify',
}