Posso passar o LHS de um processos cfengine3: line para o RHS?

2

Estou usando cfengine para iniciar o processo foobar. Aparentemente, o LHS é descartado quando eu uso process_select? Posso simplesmente passar o LHS para uma função, em vez de ter que colocar o padrão de correspondência de comando em um argumento de corpo?

Eu queria corresponder apenas os processos foobar pertencentes a um usuário específico, já que outro usuário poderia facilmente executar foobar para testes.

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";
}
    
por joeforker 22.03.2010 / 19:17

1 resposta

2

Até onde eu sei, se você quiser apenas procurar pelo processo "foobar", não precisa usar o recurso process_select .

Você não pode simplesmente fazer isso?

processes:
    "foobar"
        restart_class => start_foobar;

Se você também precisar corresponder a outros critérios ao mesmo tempo, como o usuário que está executando, conforme sugerido, recomendo usar uma variável como:

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

Ou, melhor ainda, escrever um pacote que leve alguns parâmetros, algo assim:

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";
}

E, em seguida, apenas chame este pacote como restart ("foobar", "/ usr / bin").

Eu não testei o código acima, você pode ter que ajustá-lo!

    
por 22.03.2010 / 23:47

Tags