나는 freeradius 인형극 모듈로 거의 끝났습니다. 지금 ERB 템플릿에서 해시 키를 반복하는 방법에 문제가 있습니다. 802.1x에 반경을 사용하여 사용자를 인증하고 있습니다. 사용자가 특정 LDAP 그룹의 구성원 인 경우 radius는이 그룹과 연결된 VLAN을 할당합니다. 내가 ERB 템플릿을 통해이 파일을 작성하고 싶은루프, erb 템플릿에서 hiera 해시를 초과하는 경우
/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
}
}
....
....
....
: 이것은 내 현재의 구성입니다.
common.yaml
test_freeradius::tunnel:
'vlan_101':
vlan: '101'
'vlan_102':
vlan: '102'
'vlan_103':
vlan: '103'
'vlan_110':
vlan: '110'
와 나는 정의 다음 사용하고 있습니다.
는
init.pp
....
....
$groups = hiera('test_freeradius::tunnel')
create_resources(test_freeradius::tunnel, $groups)
....
....
이는 inner-을 만들 수 test_freeradius :: 터널
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'],
}
}
및 init.pp에 지금 전화를 정의 ERB 템플릿을 사용하는 터널 파일, 어떻게해야합니까? 아니면 hiera가없는 단순한 파일로 사용하고 파일 내에서 변경해야합니까?
Puppet 해시는 ERB에서 Ruby 해시로 표시됩니다. 모든 루비 해시가 제공하는 메소드를 통해 키 세트에 액세스하거나, 값을 검색하거나, 전체 해시를 반복 할 수 있습니다. –
@JohnBollinger, 답장을 보내 주셔서 감사합니다. 여기서 나의 문제는 'elsif'와'else' 서술이다. 나는 단지'if' 문을 사용하는 것이 한 문에서 키를 루핑하고 값을 추가함으로써 작업을 더 쉽게 만들 것이라고 생각합니다. 나는 elsif와 else 문을 사용하는 방법을 찾지 못했다. – Max