ALT Linux Community general discussions
 help / color / mirror / Atom feed
* [Comm] OpenLDAP: единое дерево для разных сервисов
@ 2004-04-03 14:37 Eugene Prokopiev
  2004-04-05  5:33 ` Eugene Prokopiev
  2004-04-07  8:34 ` Pavel S. Khmelinsky
  0 siblings, 2 replies; 3+ messages in thread
From: Eugene Prokopiev @ 2004-04-03 14:37 UTC (permalink / raw)
  To: community

[-- Attachment #1: Type: text/plain, Size: 1274 bytes --]

Здравствуйте!

Поднят openldap. bind и dhcpd берут из него свои настройки. Дерево ldap 
выглядит примерно так (как его рисует gq, ldif в аттаче):

localhost
	dc=myserver,dc=myprovider,dc=ru
		ou=DNS
			relativeDomainName=@
			relativeDomainName=ns
			relativeDomainName=mail
			relativeDomainName=host1
			relativeDomainName=host2
		cn=DHCP Config
			cn=192.168.1.0
				cn=host1
			cn=192.168.3.0
				ch=host2

Возможно, в будущем появятся новые нестандартные сервисы, которые так 
же, как bind и dhcpd, потребуют хранить какие-либо атрибуты хостов сети.

Самое главное, что мне не нравится - у каждого сервиса фактически 
собственное изолированное от других дерево. Т.е. с заменой 
конфигурационных файлов на LDAP мы меняем шило на мыло.

Ближайший аналог того, что мне хочется - технология XSLT. Т.е. имеем 
основное дерево XML с той структурой, которая удобна мне (например, в 
список атрибутов объекта хост входят одновременно dns-имя, ip-адрес, 
mac-адрес). Только в это дерево можно вносить изменения. К этому дереву 
можно применять XSLT-преобразования (для bind свое, для dhcpd свое и 
т.д.) и получать на выходе деревья для каждого сервиса с необходимой для 
этого сервиса структурой.

Как реализовать в openldap нечто подобное?

-- 
С уважением, Прокопьев Евгений

[-- Attachment #2: network.ldif --]
[-- Type: text/plain, Size: 3319 bytes --]

dn: dc=myserver, dc=myprovider, dc=ru
objectClass: top
objectClass: dhcpServer
objectClass: organizationalUnit
cn: myserver.myprovider.ru
dhcpServiceDN: cn=DHCP Config, dc=myserver, dc=myprovider, dc=ru
ou: DNS

dn: ou=DNS, dc=myserver, dc=myprovider, dc=ru
objectClass: top
objectClass: dNSZone
relativeDomainName: myserver.myprovider.ru
zoneName: myserver.myprovider.ru

dn: relativeDomainName=@, ou=DNS, dc=myserver, dc=myprovider, dc=ru
objectClass: top
objectClass: dNSZone
relativeDomainName: @
zoneName: myserver.myprovider.ru
sOARecord: ns.myserver.myprovider.ru. hostmaster.myserver.myprovider.ru. 2004040401 12H 1H 1W 
 1H
nSRecord: ns.myserver.myprovider.ru.
mXRecord: 10 mail.myserver.myprovider.ru.

dn: relativeDomainName=ns, ou=DNS, dc=myserver, dc=myprovider, dc=ru
objectClass: top
objectClass: dNSZone
relativeDomainName: ns
zoneName: myserver.myprovider.ru
dNSClass: IN
aRecord: 192.168.1.1

dn: relativeDomainName=mail, ou=DNS, dc=myserver, dc=myprovider, dc=ru
objectClass: top
objectClass: dNSZone
relativeDomainName: mail
zoneName: myserver.myprovider.ru
dNSClass: IN
aRecord: 192.168.1.1

dn: relativeDomainName=host1, ou=DNS, dc=myserver, dc=myprovider, dc=ru
objectClass: top
objectClass: dNSZone
relativeDomainName: host1
zoneName: myserver.myprovider.ru
dNSClass: IN
aRecord: 192.168.1.2

dn: relativeDomainName=host2, ou=DNS, dc=myserver, dc=myprovider, dc=ru
objectClass: top
objectClass: dNSZone
relativeDomainName: host2
zoneName: myserver.myprovider.ru
dNSClass: IN
aRecord: 192.168.3.4

dn: cn=DHCP Config, dc=myserver, dc=myprovider, dc=ru
cn: DHCP Config
objectClass: top
objectClass: dhcpService
dhcpPrimaryDN: cn=myserver.myprovider.ru, dc=myserver, dc=myprovider, dc=ru
dhcpStatements: ddns-update-style none

dn: cn=192.168.1.0, cn=DHCP Config, dc=myserver, dc=myprovider, dc=ru
cn: 192.168.1.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 24
dhcpRange: dynamic-bootp 192.168.1.128 192.168.1.255
dhcpStatements: default-lease-time 21600
dhcpStatements: max-lease-time 43200
dhcpOption: routers 192.168.1.1
dhcpOption: subnet-mask 255.255.255.0
dhcpOption: domain-name "myserver.myprovider.ru"
dhcpOption: domain-name-servers 192.168.1.1
dhcpOption: time-offset -5
dhcpOption: ntp-servers 192.168.1.1
dhcpOption: netbios-name-servers 192.168.1.1

dn: cn=host1, cn=192.168.1.0, cn=DHCP Config, dc=myserver, dc=myprovider, dc=ru
cn: host1
objectClass: top
objectClass: dhcpHost
dhcpHWAddress: ethernet 00:0C:29:84:99:6B
dhcpStatements: fixed-address 192.168.1.2

dn: cn=192.168.3.0, cn=DHCP Config, dc=myserver, dc=myprovider, dc=ru
cn: 192.168.3.0
objectClass: top
objectClass: dhcpSubnet
objectClass: dhcpOptions
dhcpNetMask: 24
dhcpRange: dynamic-bootp 192.168.3.128 192.168.3.255
dhcpStatements: default-lease-time 21600
dhcpStatements: max-lease-time 43200
dhcpOption: routers 192.168.3.1
dhcpOption: subnet-mask 255.255.255.0
dhcpOption: domain-name "myserver.myprovider.ru"
dhcpOption: domain-name-servers 192.168.1.1
dhcpOption: time-offset -5
dhcpOption: ntp-servers 192.168.1.1
dhcpOption: netbios-name-servers 192.168.1.1

dn: cn=host2, cn=192.168.3.0, cn=DHCP Config, dc=myserver, dc=myprovider, dc=ru
cn: host2
objectClass: top
objectClass: dhcpHost
dhcpHWAddress: ethernet 00:0C:29:84:99:5B
dhcpStatements: fixed-address 192.168.3.4


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Comm] OpenLDAP: единое дерево для разных сервисов
  2004-04-03 14:37 [Comm] OpenLDAP: единое дерево для разных сервисов Eugene Prokopiev
@ 2004-04-05  5:33 ` Eugene Prokopiev
  2004-04-07  8:34 ` Pavel S. Khmelinsky
  1 sibling, 0 replies; 3+ messages in thread
From: Eugene Prokopiev @ 2004-04-05  5:33 UTC (permalink / raw)
  To: community

> Ближайший аналог того, что мне хочется - технология XSLT. Т.е. имеем 
> основное дерево XML с той структурой, которая удобна мне (например, в 
> список атрибутов объекта хост входят одновременно dns-имя, ip-адрес, 
> mac-адрес). Только в это дерево можно вносить изменения. К этому дереву 
> можно применять XSLT-преобразования (для bind свое, для dhcpd свое и 
> т.д.) и получать на выходе деревья для каждого сервиса с необходимой для 
> этого сервиса структурой.

Ну нашел буквально то, что искал - http://www.dsmltools.org/
Коротко: есть оказывается диалект xml для описания ldap и средства 
преобразования из одного в другое.

Однако же, чем дальше в лес, тем толще партизаны ;)

Получается, что переконфигурирование системы (всего-то добавление новой 
рабочей станции в сеть) приведет к следующей последовательности действий:

1. Пишем либо меняем главный xml-конфиг (руками либо гуём)
2. Посредством xslt генерим из него dsml
3. Далее на выбор: либо удаляем все содержимое дерева ldap и воссоздаем 
его из dsml, либо извлекаем то, что есть в виде dsml, сравнивем с тем, 
что нагенерили, и применяем изменения (чую, что последнее чревато 
страшными глюками)
4. Наконец данные в ldap - теперь те, кто умеет, читает прямо из него, а 
для тех, кто не умеет или не должен (например, iptables) генерятся 
конфиги, стартовые скрипты и рестартуются соответствующие сервисы

Ну как?

--
С уважением, Прокопьев Евгений



^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [Comm] OpenLDAP: единое дерево для разных сервисов
  2004-04-03 14:37 [Comm] OpenLDAP: единое дерево для разных сервисов Eugene Prokopiev
  2004-04-05  5:33 ` Eugene Prokopiev
@ 2004-04-07  8:34 ` Pavel S. Khmelinsky
  1 sibling, 0 replies; 3+ messages in thread
From: Pavel S. Khmelinsky @ 2004-04-07  8:34 UTC (permalink / raw)
  To: community

Eugene Prokopiev wrote:
> Здравствуйте!
> 
> Поднят openldap. bind и dhcpd берут из него свои настройки. Дерево ldap 
> выглядит примерно так (как его рисует gq, ldif в аттаче):
> 
> localhost
>     dc=myserver,dc=myprovider,dc=ru
>         ou=DNS
>             relativeDomainName=@
>             relativeDomainName=ns
>             relativeDomainName=mail
>             relativeDomainName=host1
>             relativeDomainName=host2
>         cn=DHCP Config
>             cn=192.168.1.0
>                 cn=host1
>             cn=192.168.3.0
>                 ch=host2
> 
> Возможно, в будущем появятся новые нестандартные сервисы, которые так 
> же, как bind и dhcpd, потребуют хранить какие-либо атрибуты хостов сети.
> 
> Самое главное, что мне не нравится - у каждого сервиса фактически 
> собственное изолированное от других дерево. Т.е. с заменой 
> конфигурационных файлов на LDAP мы меняем шило на мыло.
> 
> Ближайший аналог того, что мне хочется - технология XSLT. Т.е. имеем 
> основное дерево XML с той структурой, которая удобна мне (например, в 
> список атрибутов объекта хост входят одновременно dns-имя, ip-адрес, 
> mac-адрес). Только в это дерево можно вносить изменения. К этому дереву 
> можно применять XSLT-преобразования (для bind свое, для dhcpd свое и 
> т.д.) и получать на выходе деревья для каждого сервиса с необходимой для 
> этого сервиса структурой.
> 
> Как реализовать в openldap нечто подобное?

Не знаю помоему самое разумное решение это держать общее для всех 
связных сервисов дерево, их которого спец. скриптам по крону или 
по событию парсить конфиг сервиса.
Либо нужно патчить сервис на предмет чтения настроек из Вашего 
основного дерева в том виде в котором Вы его храните. Это 
актуально для таких сервисов как например Radius.

Содержания обособленных деревьев для каждого сервиса в LDAP (или 
в другой БД) это действительно шило на мыло, с одной оговоркой к 
большинству БД, в отличие от текстовых конфигов, можно легко 
получить удаленный доступ, что помогает при написание, например 
веб интерфейсов физически расположенных на другой машине.

Собсно мои соображения. ;)

-- 
Pavel S. Khmelinsky <hmepas@yauza.ru>
System Administrator,
ISP Yauza Telecom
http://www.yauza.ru


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2004-04-07  8:34 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2004-04-03 14:37 [Comm] OpenLDAP: единое дерево для разных сервисов Eugene Prokopiev
2004-04-05  5:33 ` Eugene Prokopiev
2004-04-07  8:34 ` Pavel S. Khmelinsky

ALT Linux Community general discussions

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://lore.altlinux.org/community/0 community/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 community community/ http://lore.altlinux.org/community \
		mandrake-russian@linuxteam.iplabs.ru community@lists.altlinux.org community@lists.altlinux.ru community@lists.altlinux.com
	public-inbox-index community

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://lore.altlinux.org/org.altlinux.lists.community


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git