Forum: Cfengine Help
Subject: Re: Cfengine3 binds to wrong interface when having multiple interfaces
Author: berntjernberg
Link to topic: https://cfengine.com/forum/read.php?3,22186,22683#msg-22683

Hi all,

Consider this ifconfig-printout from a Solaris 10 ldom. The hosts primary 
interface ($(sys.host))
is e1000g1:1. How can I dynamically bind to it without hard coding all hosts ip 
addresses?



lo0: flags=2001000849 mtu 8232 index 1
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx
lo0:1: flags=2001000849 mtu 8232 index 1
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx
lo0:2: flags=2001000849 mtu 8232 index 1
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx
lo0:3: flags=2001000849 mtu 8232 index 1
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx
lo0:4: flags=2001000849 mtu 8232 index 1
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx
e1000g0: flags=1000843 mtu 1500 index 2
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
e1000g0:1: flags=1000843 mtu 1500 index 2
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
e1000g0:2: flags=1000843 mtu 1500 index 2
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
e1000g0:3: flags=1000843 mtu 1500 index 2
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
e1000g1: flags=1000843 mtu 1500 index 3
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
        groupname ipmp0
e1000g1:1: flags=9040843 mtu 1500 index 3
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
e1000g1:2: flags=1000843 mtu 1500 index 3
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
e1000g1:3: flags=1000843 mtu 1500 index 3
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
e1000g1:4: flags=1000843 mtu 1500 index 3
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
e1000g1:5: flags=1000843 mtu 1500 index 3
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
e1000g1:6: flags=1000843 mtu 1500 index 3
        zone  a-zonename
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
igb0: flags=1000802 mtu 1500 index 4
        inet XXX.XXX.XXX.XXX netmask 0
igb1: flags=39040802 mtu 1500 index 5
        inet XXX.XXX.XXX.XXX netmask xxxxxxxx broadcast XXX.XXX.XXX.XXX
        groupname ipmp0



I tried this in my site.cf



bundle common g
{
    vars:
        any::
            "my_ip"                   string => host2ip("$(sys.fqhost)");
}



and then in promises.cf:



body agent control
{
    any::
        bindtointerface => "$(g.my_ip)";
        ....
}



Code wise this works but the variable seem to be interpolated after 
bindtointerface is used.
Mail send from multi homed hosts have the first interface Cfengine finds in the 
subject. In this
case e1000g0.

How can I dynamically bind to e1000g1:1 without hard coding all hosts 
ipaddresses?

_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to