On Thu, Feb 18, 2010 at 11:28:19AM -0500, Mark Burgess wrote:
>
>The example files are all in the tests/units of the source tarball

But the templates (and other example "support" files) that
are refered to I don't think are included.  For example file
~/cfengine3/trunk/tests/units/unit_template.cf has these rules:

########################################################
bundle agent testbundle
{
files:

   "/home/mark/tmp/file_based_on_template"

        create    => "true",
        edit_line => ExpandMeFrom("/tmp/source_template");

}
########################################################

bundle edit_line ExpandMeFrom(template)
{
vars:

    "myvar" string => "[sub string]";

insert_lines:

    "$(template)"

           insert_type => "file",
        expand_scalars => "true";
}
########################################################

This is great, and I did actually find this file before.
But the example is not fully complete since the file
"/home/mark/tmp/file_based_on_template" is not included.  In my case
from before, the it was the template file that contained the error.
I suspect that had I seen a known-good template that included fully
qualified variable names, it would have been much clearer.


>Jesse Becker wrote:
>> On Thu, Feb 18, 2010 at 01:14:16AM -0500, Mark Burgess wrote:
>>>
>>> Jesse,
>>>
>>> you should use the fully qualified name $(tmpl.varA) for the variables
>>> in the file, as
>>> they get processed in a different bundle and are therefore not "local"
>> 
>> This works, thanks:
>> 
>> [r...@host tmp]# cat /tmp/template
>> The first variable:   ${test.varA}
>> And the second:  ${test.varB}
>> 
>> [r...@host tmp]# cat /tmp/expanded
>> The first variable:   This is value Alpha
>> And the second:  This is value Bravo
>> 
>> The documentation posted online does not make this clear (and would have
>> saved me several hours of time yesterday), and the limited examples I
>> found online for using this method do not include mention of the full
>> qualification for the variables either:
>> 
>>     
>> http://www.cfengine.org/manuals/cf3-reference.html#expand_005fscalars-in-insert_005flines
>> 
>>     
>> http://project.iu.hio.no/viewvc/trunk/tests/units/unit_template.cf?view=markup&root=Cfengine-3
>> 
>>     https://cfengine.org/pipermail/help-cfengine/2009-November/006706.html
>> 
>> Generally speaking, having more complete examples, including any
>> "supporting files" like sample template filess, would be a big help to
>> everyone.  Perhaps these would be suitable for posting on the cfwiki?
>> 
>>> Jesse Becker wrote:
>>>> I'm trying to get a basic templating system working for several files,
>>>> and expand_scalars doesn't seem to work.  I've found serveral references
>>>> to other people having success with this, so I assume I've done
>>>> something wrong.  I'm running the cfengine 3.0.3 community RPM build.
>>>>
>>>> Here's the basic code: 
>>>>
>>>> bundle agent tmpl {
>>>>
>>>> vars:
>>>>      hostname::
>>>>          "varA" string => "This is value Alpha";
>>>>          "varB" string => "This is value Bravo";
>>>>
>>>> files:
>>>>      hostname::
>>>>          "/tmp/template"
>>>>              copy_from  =>
>>>> update_copy("${g.repo}/template",${g.policy_server});
>>>>
>>>>          "/tmp/expanded"
>>>>              create        => 'true',
>>>>              edit_defaults => empty,
>>>>              edit_line     => expand_template("/tmp/template");
>>>> }
>>>>
>>>> Both 'empty' and 'expand_template come from cfengine_stdlib.cf file
>>>> posted a few days ago.
>>>>
>>>> The content of the 'template' file is simply two lines:
>>>>
>>>>     The first variable:   ${varA}
>>>>     And the second:  ${varB}
>>>>
>>>>
>>>>
>>>> I expect, after the expansion is done to have a file that looks like
>>>> this:
>>>>
>>>>     The first variable:   This is value Alpha
>>>>     And the second:  This is value Bravo
>>>>
>>>>
>>>> But alas, the two files are identical after running cf-agent.
>>>>
>>>> Below is the relevant output from --verbose.  The template file copies
>>>> over without problems, and the 'expanded' file is created, but no
>>>> interpolation appears to be done.
>>>>
>>>> TIA,
>>>>
>>>>
>>>> cf3     Promise made by: /tmp/template
>>>> cf3     .........................................................
>>>> cf3
>>>> cf3  -> Copy file /tmp/template from
>>>> /usr/local/cfengine3/data/Packages/template check
>>>> ... <snip>
>>>> cf3  -> /tmp/template wasn't at destination (copying)
>>>> ... <snip>
>>>> cf3  -> New file /tmp/template.cfnew transmitted correctly - verified
>>>> ... <snip>
>>>>
>>>> cf3     .........................................................
>>>> cf3     Promise handle:
>>>> cf3     Promise made by: /tmp/expanded
>>>> cf3     .........................................................
>>>> cf3
>>>> cf3  -> Using literal pathtype for /tmp/expanded
>>>> cf3  -> No mode was set, choose plain file default 600
>>>> cf3  -> Created file /tmp/expanded, mode = 600
>>>> cf3 Build file model from a blank slate (emptying)
>>>> cf3  -> Handling file edits in edit_line bundle expand_template
>>>> cf3
>>>> cf3       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>>>> * * *
>>>> cf3       BUNDLE expand_template( {'/tmp/template'} )
>>>> cf3       * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
>>>> * * *
>>>> cf3
>>>> cf3     ? Augment scope expand_template with templatefile
>>>> cf3      ??  Private class context
>>>> cf3
>>>> cf3       = = = = = = = = = = = = = = = = = = = = = = = = = = = =
>>>> cf3       insert_lines in bundle expand_template
>>>> cf3       = = = = = = = = = = = = = = = = = = = = = = = = = = = =
>>>> cf3
>>>> cf3     .........................................................
>>>> cf3     Promise handle:
>>>> cf3     Promise made by: /tmp/template
>>>> cf3     .........................................................
>>>> cf3
>>>> cf3  -> Inserting the promised line "The first variable:   ${varA}"
>>>> into /tmp/expanded after locator
>>>> cf3  -> Inserting the promised line "And the second:  ${varB}" into
>>>> /tmp/expanded after locator
>>>> cf3      ??  Private class context
>>>> cf3       = = = = = = = = = = = = = = = = = = = = = = = = = = = =
>>>> cf3       insert_lines in bundle expand_template
>>>> cf3       = = = = = = = = = = = = = = = = = = = = = = = = = = = =
>>>> cf3
>>>> cf3
>>>> cf3     .........................................................
>>>> cf3     Promise handle:
>>>> cf3     Promise made by: /tmp/template
>>>> cf3     .........................................................
>>>> cf3
>>>> cf3  -> This promise has already been verified
>>>> cf3      ??  Private class context
>>>> cf3
>>>> cf3
>>>> cf3       = = = = = = = = = = = = = = = = = = = = = = = = = = = =
>>>> cf3       insert_lines in bundle expand_template
>>>> cf3       = = = = = = = = = = = = = = = = = = = = = = = = = = = =
>>>> cf3
>>>> cf3
>>>> cf3     .........................................................
>>>> cf3     Promise handle:
>>>> cf3     Promise made by: /tmp/template
>>>> cf3     .........................................................
>>>> cf3
>>>> cf3  -> This promise has already been verified
>>>> cf3  -> Saving edit changes to file /tmp/expanded
>>>> cf3 Edited file /tmp/expanded
>>>>
>>>>
>>>>
>>>
>>> -- 
>>> Mark Burgess
>>>
>>> -------------------------------------------------
>>> Professor of Network and System Administration
>>> Oslo University College, Norway
>>>
>>> Personal Web: http://www.iu.hio.no/~mark
>>> Office Telf : +47 22453272
>>> -------------------------------------------------
>> 
>
>-- 
>Mark Burgess
>
>-------------------------------------------------
>Professor of Network and System Administration
>Oslo University College, Norway
>
>Personal Web: http://www.iu.hio.no/~mark
>Office Telf : +47 22453272
>-------------------------------------------------

-- 
Jesse Becker
NHGRI Linux support (Digicon Contractor)
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to