sábado, 22 de agosto de 2009

Script MigrationTools

O Migrationtools é um conjunto de scripts em Perl que facilita a migração de usuários, grupos, alias, netgroups, redes, protocolos, RPCs, e serviços de nameservices existentes (arquivos simples, NIS e NetInfo) para LDAP.

Scripts:

# migrate_base.pl:
Cria ou renomea entradas, contexto, incluindo contextos subordinados, como ou = pessoas e ou dispositivos =.

# migrate_aliases.pl:
Migra aliases em /etc/aliases para as entradas em conformidade com o esquema rfc822MailGroup.

# migrate_group.pl:
Migra grupos no arquivo /etc/group

# migrate_hosts.pl:
Migra hosts no arquivo /etc/hosts

# migrate_hosts.pl:
Migra hosts no arquivo /etc/hosts

# migrate_networks.pl:
Migra configurações redes no /etc/networks

# migrate_passwd.pl:
Migra usuários no arquivo /etc/passwd.

# migrate_protocols.pl:
Migra protocolos em /etc/protocols

# migrate_services.pl
Migra serviços em /etc/services

# netgroups migrate_netgroup.pl:
Migra em /etc/netgroup

# migrate_netgroup_byuser.pl:
Migra o mapa netgroup.byuser. Requer revnetgroup

# migrate_netgroup_byhost.pl
Migra o mapa netgroup.byhost. Exige revnetgroup.

# migrate_rpc.pl:
Migra RPCs em /etc/rpc

Download do pacote:

http://www.padl.com/download/MigrationTools.tgz

Descompactando e instalando o pacote:

# mv MigrationTools.tgz /usr/local; cd /usr/local
# tar -zxvf MigrationTools.tgz
# cd MigrationTools-47

Alteremos as seguintes linhas do arquivo "migrate_common.ph"

# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "americanet.local";

# Default base
$DEFAULT_BASE = "dc=americanet,dc=local";

# Default Host
$DEFAULT_MAIL_HOST = "localhost";

Iremos agora finalmente migrar os dados em forma de objetos(LDIF)

# ./migrate_base.pl > base.ldif

O comando/script acima irá gerar o arquivo base.ldif, onde internamente possuírá os dados do sistema em forma de objeto no formato LDIF. No entanto, precisaremos apenas de três deles. o "People", o "Group" e o "Aliases".

Edite o arquivo e deixe apenas os que interessam para nosso caso de uso.

Ex:

# vi base.ldif

dn: ou=People,dc=americanet,dc=local
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=americanet,dc=local
ou: Group
objectClass: top
objectClass: organizationalUnit

dn: ou=Aliases,dc=americanet,dc=local
ou: Aliases
objectClass: top
objectClass: organizationalUnit

Salve e saia...(:wq)


Obs. No arquivo slap.conf, é necessário ter o schema definido pela RFC2377,segue o modelo:

#########################################################
objectclass ( 1.3.6.1.1.2.1 NAME 'domainNameForm'
DESC 'RFC2377: domainNameForm object'
SUP domain STRUCTURAL
MUST dc )

objectclass ( 1.3.6.1.1.2.2 NAME 'dcOrganizationNameForm'
DESC 'RFC2377: dcOrganizationNameForm object'
SUP organization STRUCTURAL MUST dc )

objectclass ( 1.3.6.1.1.2.3 NAME 'dcOrganizationalUnitNameForm'
DESC 'RFC2377: dcOrganizationalUnitNameForm object'
SUP organizationalUnit STRUCTURAL MUST dc )

objectclass ( 1.3.6.1.1.2.4 NAME 'dcLocalityNameForm'
DESC 'RFC2377: dcLocalityNameForm object'
SUP locality STRUCTURAL MUST dc )

objectclass ( 1.3.6.1.1.2.5 NAME 'uidOrganizationalPersonNameForm'
DESC 'RFC2377: uidOrganizationalPersonNameForm object'
SUP organizationalPerson STRUCTURAL MUST uid )
#####################################################

Copie e salve como RFC2377.schema e copie para o diretório /etc/openldap/schema e inclua no slapd.conf.

Após adicionar estae esquema podemos incluir os dados importados pelo MigrationTools.


Inclusão do LDIF na base LDAP

Usaremos o ldapadd para adicionarmos o arquivo base.ldif criado anteriormente.

# ldapadd -x -h americanet.local -D 'cn=Manager,dc=americanet,dc=local' -W -f base.ldif

Façamos um teste agora e vejamos o resultado alterado:

# ldapsearch -x -h americanet.local -b 'cn=Manager,dc=americanet,dc=local' '(objectClass)'

Veja que veremos os grupos formados pelos objetos...

Migração dos logins,senhas e Grupos do sistema em formato LDIF

# ./migrate_passwd.pl /etc/passwd users.ldif
# ./migrate_group.pl /etc/group grupos.ldif

Vamos fazer que o LDAP importe esses dados...

# ldapadd -x -h americanet.local -D 'cn=Manager,dc=americanet,dc=local' -W -f users .ldif

# ldapadd -x -h americanet.local -D 'cn=Manager,dc=americanet,dc=local' -W -f grupos.ldif

Verique como ficou a base

# ldapsearch -x -h americanet.local -b 'cn=Manager,dc=americanet,dc=local' '(objectClass)'

O comando abaixo seria uma visualização de uma classe de objeto filtrada por uid

# ldapsearch -x -h americanet.local -b "dc=americanet,dc=local" -D "cn=Manager,dc=americanet,dc=local" -W
"(&(objectclass=account)(uid=americanet))"

Após as entradas adicionadas abaixo segue um print do cliente para acesso a base LDAP chamado LUMA para Linux, com os dados importados:



E assim finaliza mais um artigo...

Nenhum comentário:

Postar um comentário

Arquivo do blog