パペットで次の問題を解決しようとしています。オプションクラスのパペット実行順序
私は複数のノードを持っています。各ノードには一連のクラスが含まれています。たとえば、mysql
クラスとwebserver
クラスがあります。 node1はWebサーバーのみ、node2はwebserver + mysqlです。
ノードにwebserverとmysqlの両方がある場合、mysqlのインストールはWebサーバーの前に行われることを指定します。
MySQLのサポートはオプションであるため、Class[mysql] -> Class[webserver]
の依存関係はありません。
私はステージを使用しようとしましたが、私のクラス間に依存関係が導入されているようです。この:私は私のノード
node node1 {
include webserver
}
にウェブサーバのクラスが含まれ
Stage[db] -> Stage[web]
class {
'webserver':
stage => web ;
'mysql':
stage => db ;
}
と.. MySQLのクラスは、同様に含まれます!それは私が望むものではありません。
オプションのクラスで注文を定義するにはどうすればよいですか?
編集:ここでの解決策は以下のとおりです。
class one {
notify{'one':}
}
class two {
notify{'two':}
}
stage { 'pre': }
Stage['pre'] -> Stage['main']
class {
one: stage=>pre;
# two: stage=>main; #### BROKEN - will introduce dependency even if two is not included!
}
# Solution - put the class in the stage only if it is defined
if defined(Class['two']) {
class {
two: stage=>main;
}
}
node default {
include one
}
結果:
notice: one
notice: /Stage[pre]/One/Notify[one]/message: defined 'message' as 'one'
notice: Finished catalog run in 0.04 seconds
〜
あなたのWebサーバクラスはあなたのmysqlクラスに依存している必要がありますか?実際の依存関係は何ですか? –
@ CodeGnome私はそれを非常に簡単に説明しようとしていました。私は、 "ベアマシン" - "すべてのネットワークアップ" - "すべてのデータソース" - "様々な人形サポートツールがインストールされている" - "今、私たちは実際の作業を行うことができます"とほぼ同等の段階を持っています。 –