hiya

I was thinking a bit more about templates and now I'm convinced this is definitely the way to go.
However I'd like to propose a change. Please give feedback.

This is the format Thomas describes in his example:
<http://faiwiki.informatik.uni-koeln.de/index.php/FaiTemplates>
#############################################################
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

[% FOREACH name = interfaces.keys.sort %]
[% i = interfaces.$name -%]
auto [% name %]
iface [% name %] inet static
        address   [% i.address %]
        netmask   [% i.netmask %]
       [% IF i.network   %] network   [% i.network   %] [% END %]
       [% IF i.broadcast %] broadcast [% i.broadcast %] [% END %]
       [% IF i.gateway   %] gateway   [% i.gateway   %] [% END %]

[% END %]
#############################################################

I'd like to suggest a small addition - an optional meta header.
(I removed the loop for easier understanding.)

Let's assume "iface0.address", "iface1.address" are somehow available.

Please note the introduction of "classes:" - it should specifiy a condition when this template is appliccable.
#############################################################
---meta---
mode: 644
user: root
group: root
classes: OS_DEBIAN WEBSERVER
---body---
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)

# The loopback interface
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
        address   [% iface0.address %]
        netmask   [% iface0.netmask %]
if-up route add -net 10.0.0.0 netmask 255.0.0.0 gw [% iface0.gateway %]

auto eth1
iface eth1 inet static
        address   [% iface1.address %]
        netmask   [% iface1.netmask %]
        gateway   [% iface1.gateway %]
#############################################################
-- /etc/network/interfaces

Let's have a look at SuSE:
(I only list the config file for eth0.)

#############################################################
---meta---
mode: 644
user: root
group: root
classes: OS_SUSE WEBSERVER
---body---
BOOTPROTO='static'
MTU=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
IPADDR='[% iface0.address %]'
NETMASK='[% iface0.netmask %]'
BROADCAST=''
ETHTOOL_OPTIONS=''
NAME=''
NETWORK=''
#############################################################
-- /etc/sysconfig/network/ifcfg-eth0

This works with SLES11, but not with SLES10. SLES10 expects the filename to be in the form /etc/sysconfig/network/ifcfg-eth-id-<mac address>. Let's make it variable!

#############################################################
---meta---
filename: /etc/sysconfig/network/ifcfg-eth-id-[% iface0.mac %]
mode: 644
user: root
group: root
classes: OS_SUSE OS_SUSE10 WEBSERVER
---body---
BOOTPROTO='static'
MTU=''
REMOTE_IPADDR=''
STARTMODE='auto'
USERCONTROL='no'
IPADDR='[% iface0.address %]'
NETMASK='[% iface0.netmask %]'
BROADCAST=''
ETHTOOL_OPTIONS=''
NAME=''
NETWORK=''
#############################################################

Now even the filename is templatable - exactly what I need.
This mechanisme also enables me to write a /etc/sysconfig/network/routes for SLES10 and /etc/sysconfig/network/ifroute-eth0 / etc/sysconfig/network/ifroute-eth1 for SLES11.

... or any other file that is distribution specific.

tschüß
thomas

Antwort per Email an