Forum: CFEngine Help
Subject: Regarding to templates automatic caching
Author: toddnni
Link to topic: https://cfengine.com/forum/read.php?3,24368,24368#msg-24368

Hi all,

I have noticed that templates automatic caching has been mentioned often 
recently. Here is my solution, which I have been using for about an year.


# This promises that a file is expanded from a template. The template file is
# loaded from the servers. It is recommended to refer to a variables array
# $($(use_template.v)) in the template file. Array should be assigned 
# like this variable string => "value".
# Defines global class fixclass when file is updated.
bundle agent use_template(file, servers, template_file, perms, fixclass, v) {

vars:
  any::
    "canonified_filename"
      string => canonify("$(file).template");
    "tmp_filename"
      string => "$(sys.workdir)/local/$(canonified_filename)";

files:
  any::
    "$(tmp_filename)"
      comment => "Promises to load the template file to a temporary file. Uses
      secure transfer just in case",
      copy_from => no_backup_scp(
        "$(template_file)",
        "@(servers)");
    "$(file)"
      create => "true",
      perms => m("$(perms)"),
      edit_defaults => empty,
      edit_line => expand_template("$(tmp_filename)"),
      classes => if_repaired("$(fixclass)");
}


The bundle should be simple, but maybe the variable v needs a simple usage 
example

bundle agent mybunbdle{
vars:
  any::
    "var_list" string => "test";
methods:
  any::
    "template_test" usebundle => use_template(
      "/tmp/test",
       "@(g.servers)", 
       "$(g.masterfiles)/files/test", 
       "444", "test_repaired", 
       "mybundle.var_list");
}

and template file should contain $($(use_template.v))

If this v thing seems overly complicated, you may forget/remove it.

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

Reply via email to