Well, alright.  It's not making sense yet.

I am working my way through the tutorial now
(http://www.cfengine.org/manuals/cf3-tutorial.pdf).  Perhaps I'll find
a working example of iteration there.

It's good you'll have something to make this clearer.  I reckon it'll
help a lot.

Aleksey

On Tue, Dec 15, 2009 at 12:25 AM, Mark Burgess <mark.burg...@iu.hio.no> wrote:
>
> In the approach given, the file is edited twice - once to add each line.
> You have to think "sub-routines". Editing is a bundle of promises itself.
>
> My Christmas bundle will help to make this clearer.
>
> Aleksey Tsalolikhin wrote:
>> Dear Brendan,
>>
>>   I tried out your code below,  expecting it to create
>>
>> search example.com
>> nameserver 192.168.1.1
>> nameserver 192.168.1.2
>>
>> but it only created:
>>
>> search example.com
>> nameserver 192.168.1.1
>>
>> I am using cfengine 3.0.2 community edition, and calling the code with
>> "cf-agent -f resolv.cf".
>>
>> Does this work for you?  If so, what am I doing wrong?
>>
>> Thanks,
>> -at
>>
>>
>> On Sun, Dec 13, 2009 at 1:53 PM, Brendan Strejcek <strej...@gmail.com> wrote:
>>> Currently there is no map() function, but you can get a similar result
>>> using iteration.
>>>
>>> body common control {
>>>    bundlesequence  => { 'example' };
>>> }
>>>
>>> bundle agent example {
>>> vars:
>>>    any::
>>>        'nameserver' slist => { '192.168.1.1', '192.168.1.2' };
>>>        'search' string => 'example.com';
>>>        'resolv' string => '/tmp/resolv.conf';
>>> files:
>>>    any::
>>>        "${resolv}"
>>>            create => 'true',
>>>            edit_line => AppendIfNoSuchLine("search ${search}");
>>>        "${resolv}"
>>>            edit_line => AppendIfNoSuchLine("nameserver ${nameserver}");
>>> }
>>>
>>> bundle edit_line AppendIfNoSuchLine(line) {
>>> classes:
>>>    'line_absent' not => regline("^${line}$","${edit.filename}");
>>> insert_lines:
>>>    line_absent::
>>>        "${line}";
>>> }
>>>
>>> On Mon, Nov 30, 2009 at 6:53 AM, Matthias Teege <matthias-...@mteege.de> 
>>> wrote:
>>>> Moin,
>>>>
>>>> I have a question about list substition. I want to create a resolv.conf
>>>> from variables.
>>>>
>>>> "dom" string => "example.com";
>>>> "dns" slist => { "192.168.1.1", "192.168.1.2" };
>>>>
>>>> It would be nice if i can use a generic add_line macro like this one:
>>>>
>>>> bundle edit_line add_line(value) {
>>>> insert_lines:
>>>>  "${value}";
>>>> }
>>>>
>>>> I can create a new list and use add_line:
>>>>
>>>> "resolv" slist => { "search $(dom)", @(dns) };
>>>>
>>>> "resolv.conf"
>>>>
>>>>  edit_line => add_line (@(resolv));
>>>>
>>>> But this does not give me a usefull resolv.conf because I missing
>>>> "nameserver". Something like
>>>>
>>>> "resolv" slist => { "search $(dom)", "nameserver $(dns)" };
>>>>
>>>> does not work.
>>>>
>>>> Is it possible to "simulate" some kind of map function or list
>>>> comprehension in cfe3? In python I can write:
>>>>
>>>> [ "nameserver %s" % h for h in ('192.168.1.1', '192.168.1.2') ]
>>>>
>>>> which gives me a new list.
>>>>
>>>> ['nameserver 192.168.1.1', 'nameserver 192.168.1.2']
>>>>
>>>> Is there something simular in cfe?
>>>>
>>>> Many thanks
>>>> Matthias
>>>>
>>>> _______________________________________________
>>>> 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
>>>
>> _______________________________________________
>> Help-cfengine mailing list
>> Help-cfengine@cfengine.org
>> https://cfengine.org/mailman/listinfo/help-cfengine
>
> --
> Mark Burgess
>
> -------------------------------------------------
> Professor of Network and System Administration
> Oslo University College, Norway
>
> Personal Web: http://www.iu.hio.no/~mark
> Office Telf : +47 22453272
> -------------------------------------------------
>
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to