Cfengine

我可以將 cfengine3 程序的 LHS: 行傳遞給 RHS 嗎?

  • March 23, 2010

我正在使用 cfengine 來啟動 foobar 程序。顯然,當我使用 process_select 時,LHS 被丟棄了?我可以簡單地將 LHS 傳遞給函式,而不必將命令匹配模式放在正文參數中嗎?

我只想匹配foobar屬於特定使用者的程序,因為另一個使用者很容易執行foobar以進行測試。

bundle agent foobar {
processes:
   "foobar" # documented way would be to use .* here
       process_select => command("foobar"),
       restart_class => start_foobar;

commands:
   start_foobar::
       "/usr/bin/foobar";
}

body process_select command(c) {
   command => "$(c)";
   process_result => "command";
}

據我所知,如果你只是想尋找“foobar”程序,你根本不需要使用該process_select功能。

你不能這樣做嗎?

processes:
   "foobar"
       restart_class => start_foobar;

如果您還需要同時匹配其他條件,例如按照您的建議執行它的使用者,我建議您使用如下變數:

vars:
  "program" string => "foobar"; 

或者,更好的是,編寫一個帶有一些參數的包,如下所示:

bundle agent restart(program, path) {
processes:
   "${program}" # documented way would be to use .* here
       process_select => command("${program}"),
       restart_class => start_foobar;

commands:
   start_foobar::
       "${path}/${program}";
}

body process_select command(c) {
   command => "$(c)";
   process_result => "command";
}

然後只需將此捆綁包稱為重新啟動(“foobar”,“/usr/bin”)。

我沒有測試上面的程式碼,你可能需要調整它!

引用自:https://serverfault.com/questions/125046