cfengine3 diretório de saídas

2

Eu comecei a executar cfengine3, usando cf-execd para planejar execuções de cf-agent no intervalo padrão a cada 5 minutos.

cf-execd captura a saída de cf-agent (que é executada com a opção --inform), armazenando a saída no diretório $ WORKDIR / outputs e também enviando o resultado por e-mail (mas somente se for diferente da última corre). Como você pode imaginar, com um arquivo de saída a cada 5 minutos, esse diretório será rapidamente preenchido com um grande número de arquivos, e espera-se que o usuário limpe esse diretório.

Eu criei uma regra que excluirá esses arquivos de saída com mais de 3 dias, mas o problema que isso cria é que cada saída será diferente da anterior (como um novo arquivo será excluído a cada vez), portanto, email será enviado. Então eu vou de muitos arquivos no diretório de saída, para muitos e-mails na minha caixa de entrada!

O que eu realmente gostaria é de suprimir mensagens quando certas promessas são consertadas, particularmente aquela que apaga arquivos no diretório de saídas. Isso essencialmente negaria a opção -I apenas para essa promessa. Alternativamente, se eu pudesse mudar o limite de tempo de 'agora' para um ponto fixo (digamos toda quarta-feira), eu poderia pelo menos restringir o número de e-mails a um por semana.

    
por aaa90210 08.09.2009 / 11:33

3 respostas

3

Parece que você nunca recebeu uma resposta para sua pergunta, então estou postando isso agora no espírito de "mais vale tarde do que nunca".

Você perguntou:

What I would really like is to suppress messages when certain promises are repaired, particularly the one which deletes files in the outputs directory. It would essentially negate the -I option for that promise only.

Até onde eu sei, não é possível negar a opção --inform de uma única promessa.

Alternatively, if I could change the time boundary from being from 'now' to a fixed point (say every Wednesday), I could at least restrict the number of emails down to one a week.

Isto pode ser conseguido usando o parâmetro "ifelapsed" - isto dá uma frequência mínima para executar uma promessa. Considere este exemplo:

bundle agent garbage_collection {     
    files:
        "$(sys.workdir)/outputs" 
            delete => tidy,
            file_select => days_old("3"),
            depth_search => recurse("inf"),
            action => weekly;
}

body action weekly {
    ifelapsed => 10080; # one week, ie (60*24*7) minutes
}

Ou você poderia apenas executar essa promessa às quartas-feiras, usando a classe especial. Eu prefiro a abordagem ifelapsed , que não depende de um dia da semana (você nunca sabe se esse host pode não estar funcionando em uma quarta-feira ...), assim:

bundle agent garbage_collection {     
    files:
        Wednesday::
            "$(sys.workdir)/outputs" 
                delete => tidy,
                file_select => days_old("3"),
                depth_search => recurse("inf");
}
    
por 27.01.2010 / 18:28
0

Na verdade, cheguei a uma resposta ainda mais simples - não execute o cf-agent com o --inform.

Apenas deixe o cf-engine fazer isso e não tente acompanhar quais reparos estão sendo feitos, a principal preocupação é que o sistema tenha chegado em um estado desejado, e não como chegou lá.

Isso pode parecer um anátema para um regime de gerenciamento de mudanças que deseja rastrear todas as mudanças no sistema com detalhes excruciantes, mas descobri que é a única mentalidade que permite usar o mecanismo cf enquanto permanece sã.

É claro que a sua resposta foi estritamente a correta para a pergunta que fiz, e é por isso que marquei.

    
por 30.01.2010 / 11:52
0

Na minha implantação "herdada", descobri que havia um pacote garbage_collection em site.cf , mas não foi chamado de nenhum lugar. Eu preciso adicionar a seqüência do pacote em promises.cf

Não tenho certeza se esse seria o caso em uma nova implantação; se assim for, você talvez precise atualizar suas promessas (eu sei que preciso)

Espero que ajude, Cameron

    
por 29.07.2014 / 11:24