Resumo do script:
Este script desenvolvido pela Servicedesk Brasil faz o backup do banco de dados e aplicação do GLPI e em seguida já abre um chamado com o resultado do script + informações que podem ser importante em uma tarefa de verificação da execução deste backup.
Pense nas possibilidades que trabalhar com APIs podem ser trazidas para a operação:
- Conceito de variáveis para qualquer integração em Shell
- Select via BD
- Search dentro da API (script)
- Dependendo do valor, abrir um chamado
- Faz select em outro banco e abre chamado no GLPI
- Dados de formulário e abrir chamado dentro do GLPI
- Trigger do Zabbix e joga para dentro de um chamado de GLPI
Vamos ao que interessa:
Para quem tiver interesse, o Danilo Santos explicou tim-tim por tim-tim cada passo para fazer o script ser executado.
O acesso ao script para download você tem no nosso repositório do Github
O vídeo você encontra no meu canal ou no da Servicedesk Brasil. Aproveita e já se inscreve nos dois!
❤ Você gostaria de ajudar o blog de alguma forma? ❤
Configurar a URL da API
Liberar os hosts e conexões com permissão a conectar na API
Nome para a conexãoEntidades Filhas SimAtivo SimRegistrar log de conexões
- Histórico: vai para o banco de logs – Menos acessos, cresce o banco de dados de logs
- Logs: Gerar arquivo de log – Muito acesso, cresce o arquivo de log
Configurar e Habilitar a API
Configurar > Geral > API
- Habilitar a API Rest = Sim
- Habilitar login com credenciais = Sim
- Habilitar que se faça login com token externo = Sim
- Se você tiver entidades filhas, marque a caixinha Entidades Filhas = Sim para que você consiga executar a API não só na Entidade Raíz mas também nas filhas
Configurar Cliente de API
Por segurança a API do GLPI precisa ser habilitada e também devemos definir quais serão os hosts que terão acesso à esta API. Este é o princípio do menor privilégio.
- Se você for usar a API apenas na rede interna, libere apenas para a rede interna.
- Se apenas um host criará sessões na API, libere apenas para o endereço deste host.
- Exemplos de Endereços de Cliente de API:
- Toda rede interna 10.1.1.0 – 10.1.1.254
- Qualquer rede (ZONA DE PERIGO) 0.0.0.0 – 0.0.0.0
- Lembre-se que qualquer equipamento conectado e com acesso ao seu servidor pode ter acesso à API e a amarração de token e credenciais deve ser ainda mais ajustada.
- Apenas um IP 10.1.1.254 – 10.1.1.254
- Apenas Localhost 127.0.0.1 – 127.0.0.1
- Na primeira configuração do Cliente da API você deve usar o re-gerar no token da aplicação para que a ferramenta crie um token para ser usado no script depois
Configurada a API e o cliente de API, que para este caso será o próprio localhost o executor do backup, partimos para a configuração do perfil e usuário para o serviço de backup.
Criação de perfil e usuário de Serviço específico para o Backup
Outra boa prática é você gerar um perfil ESPECÍFICO para um usuário reservado para realização de Backups. Desta maneira você não corre dois riscos:
- O script para de funcionar porque alguém mexeu num usuário que é usado para mais de uma finalidade e talvez nem todos saibam todas estas finalidades
- Você tem certeza de quais são os acessos e permissões que o usuário tem dentro do GLPI.
Criando um perfil para o backup
- Em Administração > Perfis, crie um novo perfil.
- Dê um nome para este perfil e selecione a Interface padrão como a Interface do perfil.
- Navegue em cada módulo e desmarque TODAS AS CAIXINHAS de permissões que este usuário não precisará acessar.
- Para este exemplo, o usuário precisa APENAS de acesso à CRIAÇÃO DE CHAMADOS. Portanto
- Aba Assistência > Chamados > Criar
- Os demais acessos podem e devem ficar desativados por segurança
Criando um usuário
- Em Administração > Usuários, crie um novo usuário.
- Atribua o perfil criado anteriormente na Entidade desejada. Neste exemplo deixarei na Raiz com acesso Recursivo
Você vai precisar criar uma Regra de Negócio, Grupo, Categoria e buscar as IDs destes itens para alimentar o script posteriormente.O script:
- Liga com Grupo via Regra de Negócio
- Insere origem da Requisição
- Insere o Tipo de chamado definido na API
- Insere um título definido via script Título – Texto + Data e Hora
- Descrição
- Ele executa comandos do Linux para descrever o que foi salvo, tamanho salvo e etc.
Estruturação do Backup no Linux
- Crie uma estrutura de pasta para armazenar o seu script de backup
- Neste exemplo vamos usar a seguinte estrutura:
- Pasta /backup
- Dentro desta pasta, duas outras chamadas, app e sql
- Na app vamos salvar a Aplicação do GLPI
- Na sql vamos salvar o MySQLdo GLPI
- Pasta /backup
Definindo os diretórios do GLPI via downstream.php
Documentação oficial sobre o downstream e dicas de segurança
- Por padrão a configuração dos diretórios do GLPI, ou seja, o caminho que o GLPI vai usar para encontrar os diretórios, pode ser verificada ou alterada no arquivo glpi/inc/downstream.php.
- Estes caminhos podem ser alterados para quando você precisa colocar a aplicação ou seus anexos em uma storage, por exemplo, e retirar a pasta files de dentro da pasta do servidor de aplicação.
- Para o exemplo, vamos abrir o arquivo e verificar onde estão definidos os caminhos da pasta de anexos e de logs para fazer o backup destas também.
- Veja que os arquivos de anexos está em /var/lib/files
- Os logs em /var/log/glpi
Entendendo o script de Backup
Acesse o script no nosso github.
- Faça o download do script e salve no seu servidor do GLPI
- Configure os acessos da API dentro do script
#!/bin/bash
#Backup + Chamado no GLPi via API
#Autor = Servicedesk Brasil | Danilo Santos, Danilo Motta
#Versao = 2.1 - Data atualizacao = 05-MAI-21
#API GLPI Acessos
GLPI_URL_API='https://travessia.glpibrasil.com.br/apirest.php'
GLPI_APP_TOKEN='GZU5W7PEadpt9arPgFXt8LGsYiC7GnSsuOkxNHY5';
GLPI_USER_TOKEN='3AU4DS1s1Dcjy09Y5EkSktc2mm3tqiwSimuJHfPf';
GLPI_ID_ENTIDADE=0; #ID da entidade de abertura do chamado
GLPI_ID_CATEGORIA=148; #ID da categoria
GLPI_ID_TIPO=2; #Tipo de chamado [1=Incidente, 2=Requisição]
GLPI_ID_ORIGEM_REQUISICAO=8; #Origem da requisição, é de onde veio o chamado(Exemplo '1' é o Helpdesk)
- GLPI_URL_API que é a URL da API que definimos lá no primeiro passo Configurar > Geral > API;
- GLPI_APP_TOKEN que é o token da aplicação que liberamos na configuração da API Configurar > Geral > API;
- GLPI_USER_TOKEN que é o token de segurança do usuário que criamos para o usuário de serviço para o backup Configurar > Administração > Usuários > Usuário do backup > API Token;
- GLPI_ID_ENTIDADE aqui vamos usar a Raiz, então vai ser 0 mas pode ser a entidade que você precisar;
- GLPI_ID_CATEGORIA Buscar a ID da categoria criada para este tipo de chamado;
- GLPI_ID_TIPO Aqui será Incidente, se fosse Requisição seria, 1;
- GLPI_ID_ORIGEM_REQUISICAO é de onde este chamado está vindo. Exemplo ID = 1 é Helpdesk.
Definidos os parâmetros de acesso à API, vamos para a parte de definição dos diretórios a serem salvos e para onde vão os arquivos
BACKUP_DIR_SQL='/backup/glpi/sql'; #Diretorio de destino Backup SQL
BACKUP_DIR_APP='/backup/glpi/app'; #Diretorio de destino Backup Aplicacao
BACKUP_DIR_FILE='/backup/glpi/app'; #Diretorio de destino Backup Files/Anexos
BACKUP_DIR_LOG='/backup/glpi/app'; #Diretorio de destino Backup Logs
LOGFILE='/var/log/glpi/backup.log'; #Saida do LOG
Acima estão os diretórios PARA ONDE o sistema vai enviar os arquivos de backup
DBCONFIG='/etc/glpi/config_db.php';
DBUSER=`grep "dbuser" $DBCONFIG | cut -d "'" -f 2`;
DBPASS=`grep "dbpassword" $DBCONFIG | cut -d "'" -f 2`;
DBNAME=`grep "dbdefault" $DBCONFIG | cut -d "'" -f 2`;
Nestes parâmetros o sistema vai buscar os dados de acesso ao banco de dados do GLPI
Se você usa o modo de instalação tarball, talvez precise colocar os parâmetros de login e senha do banco no arquivo do script conforme abaixo.
- Aqui uma dica é usar um usuário com acesso apenas de leitura no banco de dados.
- Jamais o root.
#DBNAME='glpi';
#DBUSER='glpi';
#DBPASS='GLP1@2o21';
A execução do script você pode acompanhar a partir dos 41:30 no vídeo.
Referências citadas no vídeo:
Thiago Passamani – http://www.thiagopassamani.com.br/blog/script-backup-do-glpi-mysql-e-diretorios-para-linux.html
Allan Lopes – https://github.com/allanlopesprado/Backup-GLPI
Treinamentos GLPI
➤ Site: https://www.arthurschaefer.com.br
➤ Instagram: https://instagram.com/arthurrschaefer
➤ Facebook: https://facebook.com/arthurschaefercombr
➤ LinkedIn: https://br.linkedin.com/in/arthurramosschaefer
➤ Twitter: https://www.twitter.com/arthurrschaefer
➤ Inscreva-se no Canal: https://www.youtube.com/ArthurSchaefer
➤ Canal no Telegram: https://t.me/arthurschaefer
Deixe um comentário