Name Last Update
examples Loading commit data...
files Loading commit data...
manifests Loading commit data...
README.md Loading commit data...

README.md

SEI AIO

Módulo Puppet SEI AIO (All-in-One).

Tabela de conteudo

  1. Overview
  2. Compatibilidade
  3. Setup
  4. Uso
  5. Limites
  6. Pendende
  7. Referencias

Overview

Este módulo puppet foi desenvolvimento com o objetivo de facilitar a instalação do SEI em ambiente virtualizado para fins de teste, treinamento ou mesmo para produção em pequenos ambientes.

Autores e desenvolvedores

Colaboradores

  • Thiago Silva (e-mail)
  • Jeimerson (e-mail)

Coordenadores

  • Christian
  • Francisco
  • Rogério
  • Diego

Projeto e Parceria

O desenvolvimento deste módulo ocorreu através de uma iniciativa do Ministério da Cultura e Instruct durante o projeto de implantação de SEI no MINC em 2015.

Compatibilidade

  • Esse módulo é compatível com CentOS >= 7
  • Esse módulo foi escrito usando recursos do Puppet 4.

Requisitos

  • Hyperbisor Virtualbox ou VMWARE Workstation
  • Pelo menos 4 gigas de RAM para subir a VM
  • Pelo menos 10 gigas de disco para subir a VM
  • VM com CentOS 7 instalado
  • Acesso a internet para instalação de pacotes

Setup

O que esse modulo gerencia?

classe seaio::cron

  • Agendamento cron para script AgendamentoTarefaSEI.php
  • Agendamento cron para script AgendamentoTarefaSIP.php
  • Agendamento cron para limpeza do diretório ${docroot}/sei/upload/*
  • Agendamento cron para limpeza do diretório ${docroot}/sip/upload/*

classe seaio::database

  • Instalação do MariaDB Server (via puppetlabs-mysql)
  • Configuração do MYSQL Server
  • Criação de base de dados SEI
  • Cria estrutura da base de dados do SEI
  • Define nome da organização em tabelas do banco SEI
  • Criação de base de dados SIP
  • Cria estrutura da base de dados do SIP
  • Define nome da organização em tables do banco SIP
  • Define página inicial do SIP na base SIP
  • Define página incial do SEI na base SEI
  • Gerencia do serviço do MariaDB

classe seiaio::fonts

  • Instala pacotes
    • openssl, libxml2, curl, cabextract
    • fontconfig, xorg-x11-font-utils
  • Faz download do pacote msttcore-fonts-installer-2.6-1.noarch.rpm
  • Instala pacote msttcore-fonts-installer-2.6-1.noarch.rpm

classe seiaio::httpd

  • Instalação do Apache HTTPd (via puppetlabs-apache)
  • Configurações de do MOD PREFORK
  • Instalação do apache::mod::php
  • Instalação do apache::mod::rewrite
  • Instalação do apache::mod::ssl
  • Criacao de VHOST ${dominio}
    • Configuração de alias /sip
    • Configuração de alias /infra_js
    • Configuração de alias /infra_css
    • Configuração de alias /infra_php
    • Configurações de PHP para vhost
  • Criação do diretório ${docroot} base para o SEI
  • Gerenciar o serviço do httpd
  • Configuração de perms para diretório base
  • Criação do diretório ${seidados}
  • Ajusta de permissão do binário 'wkhtmltopdf-amd64'

classe seiaio::jdk

  • Instalação do JDK para o tomcat e jetty

clase seiaio::jodc

  • Criação do group tomcat
  • Criação do usuário tomcat
  • Criação do diretório /opt/jodconverter
  • Ajuste nas permissões do diretório /opt/jodconverter
  • Instalação do tomcat
  • Instalação do Jod Converter
  • Instalação do LibreOffice
  • Configuração do serviço do soffice
  • Gerência do servico soffice
  • Gerência do serviço tomcat/jodc

classe seiaio::memcached

  • Instalação do pacote memcached
  • Gerência do serviço memcached

classe seiaio::php

  • Instalação de pacotes php
    • php-cli
    • php-pear
    • php-bcmath
    • php-gd
    • php-imap (confirmar dependencia)
    • php-ldap
    • php-mbstring
    • php-mysql
    • php-pdo
    • php-soap
    • php-xml
    • php-intl
    • php-odbc
    • php-snmp (confirmar dependencia)
    • php-xmlrpc
    • php-pspell
    • php-pecl-apc
    • php-pecl-apc-devel
    • php-pecl-memcache
    • php-zts
  • Instalação do pacote gcc (para compilacao do uploadprogress)
  • Instalação/compilação do uploadprogress via pecl
  • Configuração do uploadprogess.ini para carregar no php.d
  • Ajustes no php.ini para scripts do cron
    • post_max_size
    • default_charset
    • short_open_tag
    • default_socket_timeout
    • include_path
    • session_gc_maxlifetime
    • date_timezone

classe seiaio::seifontes

  • Download dos fontes do SEI de repositório GIT

classe seiaio::solr

  • Criação do grupo solr
  • Criação do usuário solr
  • Criação do diretório /opt/solr
  • Ajuste nas permissões do diretório /opt/solr
  • Define configurações de inicilização do jetty
  • Define configurações de inicialização do solr
  • Cria diretório /var/log/solr
  • Cria diretório /opt/solr/indices
  • Cria diretorio e configura indices "protocolos"
  • Cria diretório e configura indices "base de conhecimento"
  • Cria diretório e configura indices "publicacao"
  • Executa script para criação de indices no solrd

Uso das classes

classe principal

Neste módulo temos uma classe pública, basta chamá-la que o sei será instalado.

declarando classe seiaio (classe principal)

  class { seiaio:
    docroot            => '/var/www/html/appsei',
    diretorio_seidados => '/var/www/seidados'
    root_mysql         => 'OGbBv1rf87zNAr198cOA3ygyj',
    sei_mysql_pass     => 'mA8357mHmsJszBl',
    sip_mysql_pass     => 'mA8357mHmsJszBl',
    mysql_ipaddr       => 'localhost',
    dominio            => 'sei.funai.gov.br',
    git_repo           => 'git@bitbucket.org:instruct/seiaio.git',
    sigla_organizacao  => 'FUNAI',
    nome_organizacao   => 'Fundacao Nacional do Indio',
}

classes privadas

As classes privadas normalmente não são chamadas diretamente, a classe principal já faz a chamada a estas classes.

declarando classe seiaio::fontes (classe privada)

class { 'seiaio::seifontes':
  docroot      => 'git@bitbucket.org:instruct/seiaio.git',
  sei_git_repo => $git_repo,
}

declarando classe seiaio::httpd (classe privada)

 class { 'seiaio::httpd':
   docroot  => $docroot,
   owner    => $owner,
   group    => $group,
   dominio  => $dominio,
   seidados => $diretorio_seidados,
 }

declarando classe seiaio::database (classe privada)

class { 'seiaio::database':
  root_mysql        => $root_mysql,
  sei_mysql_pass    => $sei_mysql_pass,
  sip_mysql_pass    => $sip_mysql_pass,
  dominio           => $dominio,
  mysql_ipaddr      => $mysql_ipaddr,
  sigla_organizacao => $sigla_organizacao,
  nome_organizacao  => $nome_organizacao,
}

delcarando classe sei::memcached (classe privada)

include seiaio::memcached

delcarando classe sei::jdk (classe privada)

include seiaio::jdk

delcarando classe sei::fonts (classe privada)

include seiaio::fonts

delcarando classe sei::php (classe privada)

class { 'seiaio::php':
  docroot => '/var/www/html/seiapp',
}

delcarando classe sei::cron (classe privada)

class { 'seiaio::cron':
  docroot => $docroot,
}

delcarando classe sei::solr (classe privada)

include seiaio::solr

delcarando classe sei::jodc (classe privada)

include seiaio::jodc

Repositório GIT do SEI

O código do sei tem que estar em um repositório GIT com a seguinte estrutura na raiz do repositório:

db
infra_css
infra_js
infra_php
sei
sip

Se a estrutura não for essa, o módulo não irá funcionar.

Instalação para iniciantes

Em seu CentOS 7 instale o repositório do puppet

# yum install http://yum.puppetlabs.com/el/7/PC1/x86_64/puppetlabs-release-pc1-0.9.2-1.el7.noarch.rpm -y

Depois instale o puppet

# yum install puppet-agent -y

Você precisa instalar o módulo no diretório de módulos.

# cd /etc/puppetlabs/code/environment/production/modules
# git clone https://bitbucket.org/culturagovbr/puppet-sei-aio.git seiaio    

Depois de instalado crie um manifest para chamar o módulo

# vim /root/seiaio.pp

E adicione o conteúdo abaixo, ajustando as informações conforme seu ambiente

class { seiaio:
  docroot            => '/var/www/html/appsei',
  diretorio_seidados => '/var/www/seidados'
  root_mysql         => 'OGbBv1rf87zNAr198cOA3ygyj',
  sei_mysql_pass     => 'mA8357mHmsJszBl',
  sip_mysql_pass     => 'mA8357mHmsJszBl',
  mysql_ipaddr       => 'localhost',
  dominio            => 'sei.funai.gov.br',
  git_repo           => 'git@bitbucket.org:instruct/seiaio.git',
  sigla_organizacao  => 'FUNAI',
  nome_organizacao   => 'Fundacao Nacional do Indio',
}

Após criar o manifest execute o puppet contra o manifest

# puppet apply /root/seiaio.pp

Aguarde a instalação do SEI, após a instalação use o manual do SEI para acessá-lo e configurá-lo.

Acesso pós-instalação

Limites

  1. Só funciona em CentOS 7
  2. Só funciona com Puppet 4

Pendente

  1. Inserir manual de acesso ao sei pós-instalação
  2. Inserir informações para configuração de DNS/Hosts
  3. Criar testes unitários para classes puppet
  4. Criar testes de aceitação para classes puppet

Referências