Ich bin fast fertig mit meinem Freeradius Puppenmodul. Ich stehe nun vor einem Problem, wie man Hash-Schlüssel in einer ERB-Vorlage durchläuft. Ich verwende Radius für 802.1x, um Benutzer zu authentifizieren. Wenn ein Benutzer Mitglied einer bestimmten LDAP-Gruppe ist, weist Radius ihm den dieser Gruppe zugeordneten VLAN zu und so weiter. Dies ist meine aktuelle Konfiguration:Schleife, wenn sonst über Hiera Hash in ERB Vorlage
/etc/freeradius/sites-available/inner-tunnel
....
....
....
ldap
if (LDAP-Group == vlan_101) {
update reply {
Tunnel-Type = VLAN
Tunnel-Medium-Type = IEEE-802
Tunnel-Private-Group-ID = 101
}
}
elsif (LDAP-Group == vlan_102) {
update reply {
Tunnel-Type = VLAN
Tunnel-Medium-Type = IEEE-802
Tunnel-Private-Group-ID = 102
}
}
elsif (LDAP-Group == vlan_103) {
update reply {
Tunnel-Type = VLAN
Tunnel-Medium-Type = IEEE-802
Tunnel-Private-Group-ID = 103
}
}
else {
update reply {
Tunnel-Type = VLAN
Tunnel-Medium-Type = IEEE-802
Tunnel-Private-Group-ID = 110
}
}
....
....
....
Ich mag würde diese Datei über ERB-Vorlage erstellen.
common.yaml
test_freeradius::tunnel:
'vlan_101':
vlan: '101'
'vlan_102':
vlan: '102'
'vlan_103':
vlan: '103'
'vlan_110':
vlan: '110'
und ich folgendes verwende definieren.
definieren test_freeradius :: Tunnel
define test_freeradius::tunnel (
$vlan,
){
include test_freeradius::service
file { '/etc/freeradius/sites-available/inner-tunnel' :
ensure => 'file',
owner => 'root',
group => 'freerad',
mode => '0644',
content => template("${module_name}/tunnel.erb"),
require => Class['test_freeradius::install'],
notify => Service['freeradius'],
}
}
und es jetzt in init.pp
init.pp
....
....
$groups = hiera('test_freeradius::tunnel')
create_resources(test_freeradius::tunnel, $groups)
....
....
Aufruf Ist es möglich, die inner zu erstellen Tunneldatei mit ERB-Vorlage, wie könnte ich das tun? Oder sollte ich es einfach als eine einfache Datei ohne Hiera verwenden und Änderungen in der Datei vornehmen?
Ein Puppet-Hash wird in ERB als Ruby-Hash angezeigt. Sie können auf den Schlüsselsatz zugreifen, nach Werten suchen oder den gesamten Hash über die von allen Ruby-Hashes bereitgestellten Methoden durchlaufen. –
@JohnBollinger, Danke für die Antwort. Mein Problem ist hier das "elif" und das "else" Statement. Ich denke, nur mit einer 'if'-Anweisung wird es einfacher mit einer Anweisung, indem Sie die Schlüssel durchlaufen und den Wert hinzufügen. Ich finde einfach keine Möglichkeit, die "elsif" - und "else" -Anweisungen zu verwenden. – Max