Forum: CFEngine Help
Subject: Re: About cf_promises_validated
Author: neilhwatson
Link to topic: https://cfengine.com/forum/read.php?3,26590,26626#msg-26626

I've narrowed down my policy.  I do not know how but, something in the 
following policy seems to be causing cf_promises_validated to be updated on 
every run. If there is some sort of logic bomb in this policy I cannot see it.  
Can anyone else?

Promises.cf

body common control {

    domain       => "example.com";
    ignore_missing_inputs  => "true";
    ignore_missing_bundles => "true";
    bundlesequence   => { "main", };
}
body agent control {
    allclassesreport => "true";
}
body server control {
    allowconnects  => { "10\..*" };
    allowallconnects => { "10\..*" };
    allowusers   => { "root" };
    cfruncommand   => "${sys.workdir}/bin/cf-agent";
    denybadclocks  => "false";
    maxconnections => "500";
    trustkeysfrom  => { "${sys.policy_hub}" };
}
body executor control {
    splaytime  => "1";
    exec_command => "$(sys.workdir)/bin/cf-agent -f failsafe.cf && 
$(sys.workdir)/bin/cf-agent";
}
bundle server control {

    access:
      "${sys.workdir}/masterfiles"
        comment => "ACL's for client access.",
        admit => { "10.234.253.55" };
}
bundle agent main {
    reports:
      cfengine::
        "Main bundle";
}


failsafe.cf

body common control {
    bundlesequence => { "fsg", "fsmain", };
}

bundle common fsg {

    vars:
      "procs" 
        comment => "Cfengine processes to restart",
        handle  => "fsg_vars_procs",
        slist => { 
            "cf-serverd",
            "cf-execd",
            "cf-monitord"
        };
}

bundle agent fsmain {

    methods:
      "inputs" -> { "Cfengine latest inputs" }
        handle  => "fsmain_methods_inputs",
        usebundle => fs_inputs;

      "procs" -> { "Cfengine processes" }
        handle  => "fsmain_methos_procs",
        usebundle => fs_procs;
}

bundle agent fs_inputs {

    vars:
      "procs"
        comment => "Cfengine Processes",
        handle  => "fs_inputs_vars_procs",
        slist => { "@{fsg.procs}" };

    classes:
      "check_inputs" 
        comment  => "Set class once per day",
        handle   => "fs_inputs_classes_check_inputs",
        expression => splayclass("$(sys.host)$(sys.ipv4)","daily");
        
    files:
      "${sys.workdir}/cf_promises_validated"
        comment => "Check if new files are available",
        handle  => "fs_inputs_files_cf_promises_validated",
        classes => u_if_repaired("fs_new_inputs_ready"),
        copy_from => u_remote_dcp(
            "${sys.workdir}/masterfiles/cf_promises_validated",
            "${sys.policy_hub}"
            );

      fs_new_inputs_ready|check_inputs::
        "${sys.workdir}/inputs"
            comment  => "Keep inputs up to date",
            handle   => "fs_inputs_files_fs_new_inputs_ready_inputs",
            perms    => u_mog( "640", "root", "root"),
            depth_search => u_recurse("inf"),
            classes  => u_if_repaired("fs_new_inputs"),
            copy_from  => u_remote_dcp(
              "${sys.workdir}/masterfiles",
              "${sys.policy_hub}"
              );

    processes:
      fs_new_inputs::
        "${procs}"
            comment => "Stop processes if inputs are updated",
            handle  => "fs_inputs_processes_fs_new_inputs_procs",
            signals => { "term", "kill" };
}

bundle agent fs_procs {

    vars:
      "procs"
        comment => "Cfengine Processes",
        handle  => "fs_procs_vars_procs",
        slist => { "@{fsg.procs}" };

    processes:
      "${procs}"
        comment   => "Ensure processes are running.",
        handle    => "fs_procs_processes_procs",
        restart_class => canonify("${procs}_restart");
        
    commands: 
      "${sys.workdir}/bin/${procs}"
        comment  => "Ensure processes are running.",
        handle   => "fs_procs_commands_procs",
        contain  => u_silent,
        ifvarclass => canonify("${procs}_restart");
}
        
body perms u_mog(mode,user,group)
{
owners => { "$(user)" };
groups => { "$(group)" };
mode => "$(mode)";
}

body depth_search u_recurse(d)
{
depth => "$(d)";
xdev  => "true";
}

body classes u_if_repaired(x)
{
promise_repaired => { "$(x)" };
}

body copy_from u_remote_dcp(from,server)
{
servers   => { "$(server)" };
source  => "$(from)";
compare   => "digest";
}

body contain u_silent
{
no_output => "true";
}


_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to