I need to get ipv4 address in a var to write it into config file.
There are variety of interface configurations, but all machines has ip
from subnet 10.0.50.0/24 which is management subnet.  Unfortunately
this ip can be assigned to different interfaces: somewhere to eth0,
somewhere to eth1 etc...

This is how I am trying to get it:
bundle agent test {
 var:
  "mngmt_ip" slist => grep("10\.0\.50","sys.ipv4");
command:
 "/bin/echo my management ip is $(mngmt_ip)"
}

But it doesnt work, as ipv4 is array and if I try to use it with no
index it returns only first element. "@sys.ipv4" doesnt work either =(

I was thinking about different approached but cant find missing bits
to complete them:

1.  using getindices
bundle agent test {
 var:
  "iface" slist => getindices("sys.ipv4");

command:
 "/bin/echo my management ip is"
  args => "$(array[$(ifaces)])";
 //dont know how to do following (pseudocode):
 condition => match("10\.0.\50","$(array[$(iface)])");
}

The idea is to apply regexp condition to promise and evaluate it.
Probably "ifvarclass" can help, but I dont know how to use it
properly. I've tried to add simple "ifvarclass => "ipv4_10_0_50" but
got syntax error =(
_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to