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 <[email protected]> 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 <[email protected]>
>>> 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 <[email protected]>
>>>> 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
>>>>> [email protected]
>>>>> https://cfengine.org/mailman/listinfo/help-cfengine
>>>>>
>>>> _______________________________________________
>>>> Help-cfengine mailing list
>>>> [email protected]
>>>> https://cfengine.org/mailman/listinfo/help-cfengine
>>>>
>>> _______________________________________________
>>> Help-cfengine mailing list
>>> [email protected]
>>> 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
> [email protected]
> 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
[email protected]
https://cfengine.org/mailman/listinfo/help-cfengine