一般的な答えは、グループごとにクラスを定義し、それに応じて適切なパスを変数に割り当てることです。例えば:
vars:
group1::
"httpd_conf" string => "/usr/local/apache/httpd.conf";
group2::
"httpd_conf" string => "/etc/httpd/httpd.conf";
次に$(httpd_conf)
、ファイル操作で使用すると、グループに応じて正しい値になります。
潜在的にトリッキーな部分は、これらのクラスを定義する方法です。この場合、設定と好みによって異なります。たとえば、各グループのホストを明示的にリストすることで、クラスを定義できます。
classes:
"group1" or => { "host1", "host2", "host3" };
"group2" or => { "host4", "host5", "host6" };
または、ホスト名パターンと照合することにより:
classes:
"group1" expression => classmatch("grp1.*");
"group2" expression => classmatch("grp2.*");
他の可能性もあります。完全な処理については、私の著書「Learning CFEngine 3」の第 6 章にあるホスト グループのクラスの定義を参照してください。