Here my advice:

Try and avoid per-host file anythings. Cfengine provides classes to control
per-host behaviors, trying to simulate that behavior yourself by attempting
to control which files go to which machine undermines Cfengine most powerful
feature - class-based behavioral control. In other words, I recommend you
deploy the same set of configuration files to every machine, and use classes
to control which bodies/bundles get applied to any given machine.

My approach to the bundlesequence is as follows:

# promise.cf

bundlesequence => { @(g.site_seq) } ;

# site.cf

... # lots of "classes" expressions to determine which host we are on

"common_seq" slist => { "some", "common", "bundles" };

web_servers::

"site_seq" slist => { @(common_seq),  "php", "apache2" } ;

data_servers::

"site_seq" slist => { @(common_seq),  "mysql" } ;

processing_servers::

"site_seq" slist => { @(common_seq),  "some_engine" } ;

# using the above, I can easily add a bundle that applies to every server
(common_seq), or one that applies to just a given class of machines.

On Wed, Sep 15, 2010 at 9:03 PM, <no-re...@cfengine.com> wrote:

> Forum: Cfengine Help
> Subject: Looking for ideas on people's config
> Author: hhammer
> Link to topic: https://cfengine.com/forum/read.php?3,18245,18245#msg-18245
>
> Hi,
>
> new to cfengine, I'm using cfengine 3 and I'm trying to understand how to
> best organize things.
>
> Basically, I'd like to minimize the amount of typing and stored
> configuration files. I'd like to have macro groups (eg webservers, desktops,
> etc.) but retaining the possibility of overriding the default configuration
> if a host needs to.
>
> My first attempt was
>
> bundlesequence => { "@(g.commonbundles)", "$(sys.host)" };
>
> the $(sys.host) bundle would be defined in a file called hostname.cf, and
> would include all the relevant promises for the host. This is not optimal as
> it is a lot of work to create and change if I need many host with the same
> configuration (ie, editing n files).
>
> So I tried with a per-host promises.cf, which would include, say
>
> bundlesequence => { "@(g.commonbundles)", "apache", "php", "mysql" };
>
> and then have apache.cf, php,cf, mysql,cf containing the relevant bundles.
> This at least makes the bundles reusable, but still, if I have 100 machines
> like that and I want to change the bundle sequence I have to edit 100 files.
>
> What I'd really need is a sort of "bundle of bundles", so I could say
> (pseudo code, obviously)
>
> bundlesequence => { "@(g.commonbundles)", "webserver_superbundle" };
>
> where "webswerver_superbundle" would be the list of the relevant bundles
> for the webserver.
> Is such a thing possible at all?
>
> Thank you
>
> _______________________________________________
> Help-cfengine mailing list
> Help-cfengine@cfengine.org
> https://cfengine.org/mailman/listinfo/help-cfengine
>
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to