Forum: CFEngine Help
Subject: How to manage different types of servers?
Author: linuxgurugamer
Link to topic: https://cfengine.com/forum/read.php?3,26618,26618#msg-26618

We have several different types of servers, which can be grouped into several 
main groups.  For this discussion, I'll refer to the following:

Group 1:    web servers
Group 2:    database server

I've been trying to implement a method to have a file on each system identify 
which group it belongs in.  I'd like to be able to do it this way so that the 
CF-engine config won't have to be changed every time we add a new system.  I 
started using the following method as a precursor to creating a development vs 
production environment on the same system.

I found the following post:  policy_path.dat selecting config source from 
server, but can't seem to get it to work.  

So what I've done is to create the following directories on the cfengine server:

/var/cfengine/masterfiles
/var/cfengine/masterfiles-web
/var/cfengine/masterfiles-db

On the destination system, I created a file called: policy_suffix.dat, and put 
in the file the desired suffix for the system.

Then, back on the master, I copied the update.cf from teh sample directory, and 
modified it as follows:

bundle agent update
{
vars:
    "u_workdir"     string => "/var/cfengine";
    "u_policyhost"  string => "192.168.1.158";

    "policy_suffix_dat"
        comment => "Path to my config on policy host, read from file",
        string  => readfile("$(u_workdir)/policy_suffix.dat",80);

    "master_location" string => "$(u_workdir)/masterfiles$(policy_suffix_dat)";

 
For now, I just copied the masterfiles directory to masterfiles-web and 
masterfiles-db, and made a simple change in a file in each just to see if the 
proper files were being downloaded.

I also modified masterfiles/promises.cf as follows:


body common control
{
 any::

     bundlesequence => {
                         "update",
                         "main",
                         "edit_motd",
                       };
 any::
     inputs => {
                "update.cf",
                "cfengine_stdlib.cf",
                "edit_motd.cf",
               };



But it never seems to access/copy the files from any directory other than 
/var/cfengine/masterfiles

So I know I'm missing something here, and would appreciate pointers in the 
right directory.

Also, if there is a better way to manage different types of servers, I'd 
appreciate being pointed in that direction as well.

Thanks in advance.


JBB

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

Reply via email to