CFEngine - aplicando políticas separadas a diferentes servidores

2

Estou olhando para usar o CFEngine em alguns servidores linux.
Meu problema é que eu preciso aplicar políticas separadas dependendo do servidor. Eu olhei toda a documentação deles, e não consigo encontrar nenhum lugar que diga que isso pode ou não ser feito.
Isso é possível usando o CFEngine? Ou eu deveria procurar em outro lugar.

    
por Azzie Rogers 25.02.2014 / 18:29

2 respostas

2

Já faz muito tempo sem usar o CFengine, mas enfrentamos um problema semelhante. problema quando estávamos usando. Finalmente, chegamos a uma solução, usando um agregação dinâmica. Eu estou resgatando e modificando um snippet antigo de código, então a sintaxe pode estar errada, mas acho que você terá uma ideia.

bundle common g { 
    classes: 
        "some_servers" expression => "someserver01|someserver02";
        "another_servers" expression => "anotherserver01|anotherserver02";
        # Define other classes for your hosts here as needed
    vars:
        any::
            "bs_common" slist => {
                "bundle_1"
            };

        some_servers::
            "bs" slist => {
                "@(g.bs_common)",
                "bundle_2",
                "bundle_3",
            };

        another_servers::
            "bs" slist => {
                "@(g.bs_common)",
                "bundle_3",
            };
}

body control common {
    bundlesequence => {
        "@(g.bs)",
    };
}
    
por 26.02.2014 / 16:42
2

Você pode usar classes para definir onde as políticas serão aplicadas e, por padrão, o Cfengine cria uma classe com o nome do host de cada servidor em execução.

Por exemplo, na seguinte promessa se o nome do host do servidor for server01 O Cfengine informará "Hello master" (verifique o syslog para ler os relatórios), se o hostname for server02, o Cfengine informará "Hello slave":

body common control
{
  bundlesequence => { "hello" };
}

bundle agent hello
{
  reports:

    server01::

      "Hello master!"
        comment => "It's just a dummy report for server01";

    server02::

      "Hello slave!"
        comment => "It's just a dummy report for server02";
}

Você pode executar esta política de exemplo a partir de um arquivo chamado hello.cf com:

cf-agent -I -f hello.cf

Você pode encontrar mais informações sobre classes e operações usando-as nos documentos oficiais .

    
por 22.05.2014 / 23:33