Forum: CFEngine Help
Subject: Re: CFEngine Help: How-to restart machine after certain package have 
been installed.
Author: juriskrumins
Link to topic: https://cfengine.com/forum/read.php?3,26673,26704#msg-26704

Actually "rebooting all the time" issue I've also experienced. 
In my case it was caused by incorrect class_expression usage (specifically 
logical operator usage). 
Anyway I've tried following code and seems like it's working:


body common control {
        bundlesequence => {"machine_type","packages"};
        inputs => {
                "cfengine_stdlib.cf",
                "machine_type.cf",
                "packages.cf"
        };
}
bundle common machine_type {

        vars:
                "hn" slist => { "/root/vz_hardware_node" };
                "ct" slist => { "/root/vz_container" };
        classes:
                "vz_hardware_node" expression=> filesexist ("@(hn)");
                "vz_container" expression=> filesexist ("@(ct)");
        reports:
                vz_hardware_node::
                        "vz_hardware_node class defined";
                vz_container::
                        "vz_container class defined";
}
bundle agent packages {
vars:   
        !vz_hardware_node.!vz_container::
                        "kernel_package" slist => {
                        "mc",
                },
                comment => "Define kernel to install arch specifi",
                handle => "packages_vars_kernel_package";

packages:
        !vz_hardware_node.!vz_container::
                "$(packages.kernel_package)"
                        package_policy => "add",
                        package_architectures => { "x86_64" },
                        package_method => yum,
                        classes => if_repaired("restart_machine");

#reports:
commands:
        "/sbin/shutdown -r +5" 
                ifvarclass => "restart_machine";
}



Just a single issue I've found while experimenting - 
package_list_update_ifelapsed="240" by default.
So as  fas as I understand package list cache by default (ar least for 
package_method=yum) set to 4h,
so altering package list outside of cfengine (maybe even using cfengine 
packages promise) can cause
a latency in reaction (package add/delete/update) from CFEngine side mainly 
because of outdated 
package list cache. So when I run mentioned code frequently 
package_list_update_ifelapsed come into play
and code doesn't work as it should, independently of mc package status. Setting 
package_list_update_ifelapsed=0
fix this issue, but probably produce more load on system.

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

Reply via email to