Como leio um arquivo pid no cfengine?

2

Como leio um arquivo pid no cfengine 3 e reinicio esse processo se ele não estiver em execução?

    
por joeforker 22.03.2010 / 19:06

2 respostas

2

No cfengine 2, usei algo como:

processes:
  "httpd" restart "/etc/init.d/apache restart"

No cfengine 3, o reinício dos processos deve ser codificado como um comando separado.

processes:
   "httpd"
     restart_class => "start_httpd";

commands:
  start_httpd::
    "/etc/init.d/apache restart";

Isso definirá a classe "start_httpd" se o httpd não estiver em execução. Em seguida, executará o script de inicialização para garantir que ele seja iniciado. Veja o manual de referência cf3 para uma explicação mais profunda de como funciona o restart_class.

    
por 29.05.2011 / 22:05
1

Em vez de olhar diretamente para o arquivo PID, eu tentaria deixar o Cfengine 3 gerenciar seu serviço / processo selecionado. Para o Cfengine 3, você pode usar o seguinte código (pode não ser perfeito, mas funciona):

body common control {
    version => "1.0";
    bundlesequence => { "check_services" };
}

bundle agent check_services {
    vars:
        "services" slist => { "apache2", "mysql" };
        "init_scripts_path" string => "/etc/init.d"; 

    processes:
        "$(services)"
            comment => "Check if the processes for '$(services)'",
            restart_class => "restart_$(services)";

    commands:
        "${init_scripts_path}/${services} start"
            comment => "Restarting the service",
            ifvarclass => "restart_${services}";

}

Por favor, note que eu escrevi este script Cfengine 3 para um cliente Ubuntu, então você pode ter que adaptá-lo às suas necessidades e distribuição.

Você pode baixar este snippet de código aqui.

    
por 11.08.2012 / 12:11

Tags