Linux Group Policy

Vamos ver como distribuir tarefas em uma rede corporativa Linux. Tentarei mostrar como gerenciar questões básicas como atualização de máquinas e configurações de software etc.

[ Hits: 24.995 ]

Por: Daniel Roque em 07/04/2016


A necessidade



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.
  1. todo job precisa ser nomeado com a extensão .job ex.: atualizar.job
  2. todo job precisa ter permissão de execução e leitura apenas para o proprietário e tem que ser root
  3. 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.

    Próxima página

Páginas do artigo
   1. A necessidade
   2. Roles e Jobs
   3. Instalação dos clientes
Outros artigos deste autor

Samba 4 como controlador de domínio com Active Directory da MS

Leitora SafeSign de e-CPF no Linux

Leitura recomendada

Como encontrar o NetID e o Broadcast de uma determinada rede

Implementando Servidor NTP no Debian

Servidor DNS: Debian 9 Stretch

Análise de Desempenho: Web API

Instalação do OCS Inventory (última versão, 2.9.2 - 2022) no Debian 11

  
Comentários
[1] Comentário enviado por renato473 em 08/04/2016 - 09:10h

Olá,
Acho que isso poderia ser feito via puppet ou ansible, pois segue o conceito de devops.

[2] Comentário enviado por tiekookeit em 08/04/2016 - 10:15h


[1] Comentário enviado por renato473 em 08/04/2016 - 09:10h

Olá,
Acho que isso poderia ser feito via puppet ou ansible, pois segue o conceito de devops.


Legal, obrigado pela dica, depois vou dar uma olhada com calma, mas em ambos sites oficiais temo as opção "try it free" o que me leva a crer que são produtos comerciais e não opensource, não que não cumpram o objetivo, mas prefiro usar e produzir software livre sempre que possível.

[3] Comentário enviado por removido em 09/04/2016 - 11:03h

Puppet e Ansible são GPL. Outra opção bacana é o Spacewalk, que também está licenciado sobre GPL.

[4] Comentário enviado por itamarnet em 11/04/2016 - 08:54h

Apenas como uma sugestão, se for aplicável é claro
A variável job_version está no formato de uma data padrão 'dd-mm-aa': job_version='29-03-16'
Não seria mais adequado usar um padrão iso, como 'aaaa-mm-dd': job_version='2016-03-29'
Levo em consideração a possibilidade de ordenação, exportação para um BD ou transcrição para um arquivo csv, xml ou json.
E a possibilidade de uso para além de fronteiras "tupiniquins" poderia valer o esforço.
Seria viável?

[5] Comentário enviado por tiekookeit em 12/04/2016 - 14:36h

É uma opção intamarnet, no entanto ambas variáveis aceita qualquer valor no momento. É simplesmente um par de chaves distintas.

[6] Comentário enviado por arsousa em 06/08/2016 - 12:16h

Prezado Daniel.
Parabéns pelo artigo.

Fiquei curioso em conhecer o ERP que comentou, poderia informar o nome e site do fornecedor?

Desde já agradeço.
Att.
Anderson

[7] Comentário enviado por tiekookeit em 08/08/2016 - 09:17h


[6] Comentário enviado por arsousa em 06/08/2016 - 12:16h

Prezado Daniel.
Parabéns pelo artigo.

Fiquei curioso em conhecer o ERP que comentou, poderia informar o nome e site do fornecedor?

Desde já agradeço.
Att.
Anderson

Então caro colega, ele é um ERP mas é de nicho, trata-se do Autosystem da Lynx para postos de gasolina. É um sistema completo mas focado para as questões relacionado a postos de gasolina, conveniência,com contabilidade integração fiscal etc... Não se ele se aplica a outros tipos de negócio no entanto.

[8] Comentário enviado por fabiobarros87s em 04/09/2016 - 21:43h

Aproveitando o assunto, na empresa onde trabalho utilizamos o active directory (windows 2012 server), as estações de trabalho são 80% linux, estou a procura de uma solução livre para adicionar GPO para as estações!
Centrify e Likewise tem soluções para isso mas tem que comprar licença!
Desde já agradeço a atenção.

[9] Comentário enviado por tiekookeit em 03/09/2018 - 08:38h

E ai galera, desde a aquisição do GitHub pela M$, migrei meus projetos para o sourceforge, meu santo não bate com o da m$ xD. O repositório atual do projeto está hospedado em https://sourceforge.net/projects/lgpo/.

Portanto o comando na terceira página para clonar o projeto passou de:
git clone https://github.com/tiekookeit/lgpo.git

para
git clone git://git.code.sf.net/p/lgpo/code lgpo

Keep it open!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts