Backup do GLPI e Abertura de Chamado com API

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:

  1. 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
  2. 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

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


por

Tags:

Comentários

2 respostas para “Backup do GLPI e Abertura de Chamado com API”

  1. […] Você pode também testar o uso com o nosso Script de Backup que abre chamados no seu GLPI […]

  2. Avatar de Christie Petelin
    Christie Petelin

    Excelente conteúdo..

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *