Recentemente, um dos meus clientes resolveu migrar toda rede dele para
Linux nas estações de trabalho.
O ERP dele é muito bem feito e roda perfeitamente no Linux, fiz um mapeamento básico e como sou entusiasta de software livre, fiquei maravilhado com a ideia, mesmo por que embora fosse um desafio novo, já tive experiências em migrar redes anteriormente.
Pois bem, desta vez eu me vi fazendo uma série de tarefas repetidas nas estações, como por exemplo padronizar uma configuração, mudar senha geral do VNC, atualizar máquinas etc., percebi que algo parecido com o sistema de GPO do Windows era o que eu precisava.
Fiz uma busca rápida na internet, mas não encontrei nada parecido para Linux, eu sei que existem softwares que fazem este tipo de função com OCS etc., mas sei que não era exatamente o que eu queria, então resolvi desenvolver um pequeno sistema que faria o que eu precisava.
LGPO
Pois bem, de pirraça, dei nome ao projeto de LGPO, fazendo alusão justamente ao que eu queria de funcionalidade na rede do pinguim.
Como funciona:
Do lado servidor, criamos uma estrutura de roles que são os papéis, e dentro dos roles cada papel agrupa um conjunto de jobs (tarefas). Nos clientes informaremos a quais papeis eles pertencem.
Então imagine, podemos ter um role (papel) geral que se aplica a todas a maquinas, um papel por exemplo chamado lexmark que se aplica a estações que possuem ligação com uma determinada impressora etc.
Os jobs (tarefas) são basicamente scripts que irão executar nas máquinas, porém com alguns itens mandatórios para que sejam reconhecidos como válidos.
- todo job precisa ser nomeado com a extensão .job ex.: atualizar.job
- todo job precisa ter permissão de execução e leitura apenas para o proprietário e tem que ser root
- todo job precisa ter 2 variáveis job_name e job_version
Instalação do servidor
Estou considerando instalação de programas em um ambiente baseado no Debian, adeque de acordo com a sua distribuição.
No servidor, não é necessário instalar o LGPO, vamos apenas instalar o rsync:
# apt-get install rsync
O arquivo de configuração do rsync
/etc/rsyncd.conf vai ficar assim:
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
[lgpo]
path = /var/lib/lgpo/
comment = Linux Group Policys
uid = root
gid = root
read only = yes
list = yes
auth users = lgpo
secrets file = /etc/rsyncd.secrets
hosts allow = 10.2.0.0/255.255.255.0
Observe que estabelecemos o usuário como lgpo. Este usuário precisa estar contido no arquivo /etc/rsyncd.secrets e este arquivo precisa ter permissão 600. Exemplo:
# echo 'lgpo:SeNhA' >/etc/rsyncd.secrets
# chmod 660 /etc/rsyncd.secrets
Vamos criar a estrutura de pasta e iniciar o serviço:
# mkdir -p /var/lib/lgpo/{data,roles}
# service rsync restart
Adeque o parâmetro hosts allow de acordo com a realidade da sua rede.
O comando "
rsync rsync://localhost" deve listar o repositório se este tiver sido configurado corretamente.