A resposta do maciejmrowiec é boa, mas incompleta; não há obrigação na CFEngine de ter as mesmas promessas em TODOS os seus nós; mas esse é o comportamento padrão
Existem duas maneiras de alcançar o que você deseja:
- Tenha as mesmas promessas em todos os lugares (a implementação padrão), e usando classes, controle qual host faz o quê (e para isso eu me refiro à resposta do maciejmrowiec que é bastante abrangente sobre o assunto)
-
Tenha promessas diferentes no sistema diferente. Há razões para que você não queira que todos os sistemas tenham as mesmas promessas: segredo que você não quer compartilhar, teste / preprod / prod ambiente (mexer com as promessas de teste não deve quebrar a produção). Assim, você pode ter diferentes conjuntos de promessas e armazená-las em pastas diferentes no servidor de políticas (como / var / cfengine / masterfiles / folder1 e / var / cfengine / masterfiles / folder2); e configure o servidor cf para compartilhar essas pastas apenas para os hosts corretos
bundle server access_rules() { access: "/var/cfengine/masterfiles/share/folder1" admit => { "host1", "host2", "host3" }; "/var/cfengine/masterfiles/folder2" admit => { "host55" }; }
E faça com que o arquivo update.cf copie a promessa da localização correta
host55::
"$(sys.workdir)"
copy_from =>u_rcp("/var/cfengine/masterfiles/folder2", "$(sys.policy_hub)");
!host55::
"$(sys.workdir)"
copy_from =>u_rcp("/var/cfengine/masterfiles/folder1", "$(sys.policy_hub)");