Try something like this...

CF2 ---------------------------------------------------------------------------

resolve:

     "search iu.hio.no cfengine.com"
     128.39.89.10
     158.36.85.10
     129.241.1.99


CF3 ---------------------------------------------------------------------------

vars:

   "resolvers" slist => { "128.39.89.10", "158.36.85.10", "129.241.1.99" };

files:

   "$(sys.resolv)"

      edit_line => resolvconf("iu.hio.no cfengine.com",@(resolvers));

bundle resolvconf(search,list)
{
delete_lines:

  "search.*";

insert_lines:

  "search $(search)";
  "$(list)";
}


Aleksey Tsalolikhin wrote:
> 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

-- 
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