README.md
SEI AIO
Módulo Puppet SEI AIO (All-in-One).
Tabela de conteudo
- Sobre
- Autores
- Colaboradores
- Coordenadores
- Projeto
- Requisitos
- Classes
- GIT
- Setup
- Acesso
- Pendente
- Referências
Sobre
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.
Para usar este módulo é necessário ter acesso ao código fonte do SEI préviamente.
Autores
Desenvolvedores e criadores do módulo
- Guto Carvalho (gutocarvalho@instruct.com.br)
- Miguel Filho (gutocarvalho@instruct.com.br)
Colaboradores
Profissionais que deram apoio na revisão e testes do módulo
- Thiago Ferreira
Coordenadores
Coordenadores do projeto SEI na CGTI-MINC
- Diego Aguilera
- Rogério Pereira
- Christian Miranda
- Francisco Morais
Projeto
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.
Requisitos
Do sistema operacional
- Esse módulo deve ser utilizado em CentOS 6
Da versão do puppet
- Esse módulo deve ser executado com Puppet 4
Do módulo puppet
- Este módulo depende do módulo puppetlabs-apache
- Este módulo depende do módulo puppetlabs-mysql
- Este módulo depende do módulo puppetlabs-stdlib
- Este módulo depende do módulo puppetlabs-vcsrepo
- Este módulo depende do módulo puppetlabs-staging
- Este módulo depende do módulo puppetlabs-concat
- Este módulo depende do módulo puppetlabs-inifile
Do hypervisor
- Hypervisor 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 6 instalado
- Acesso a internet para instalação de pacotes
Do código fonte
- Código fonte do SEI disponível em algum repositório GIT
Classes
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
classe seiaio::seiconf
- Criação dinâmica do arquivo ConfiguracaoSEI.php
- Criação dinâmica do arquivo ConfiguracaoSip.php
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.organizacao.gov.br',
git_repo => 'git@bitbucket.org:instruct/seiaio.git',
sigla_organizacao => 'ORG',
nome_organizacao => 'Organizacao Federal',
}
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 => '/var/www/html/appsei',
sei_git_repo => 'git@bitbucket.org:instruct/seiaio.git',
}
declarando classe seiaio::httpd (classe privada)
class { 'seiaio::httpd':
docroot => '/var/www/html/appsei',
owner => 'apache',
group => 'apache',
dominio => 'sei.dominio.gov.br',
seidados => '/var/www/seidados',
}
declarando classe seiaio::database (classe privada)
class { 'seiaio::database':
root_mysql => 'senha',
sei_mysql_pass => 'senha',
sip_mysql_pass => 'senha',
dominio => 'sei.dominio.gov.br',
mysql_ipaddr => 'ip',
sigla_organizacao => 'ORG',
nome_organizacao => '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/appsei',
}
delcarando classe sei::cron (classe privada)
class { 'seiaio::cron':
docroot => '/var/www/html/appsei',
}
delcarando classe sei::solr (classe privada)
class { 'seiaio::solr':
dominio => 'sei.organizacao.gov.br',
}
delcarando classe sei::jodc (classe privada)
include seiaio::jodc
delcarando classe sei::seiconf (classe privada)
class { 'seiaio::seiconf':
docroot => '/var/www/html/appsei',
owner => 'apache',
group => 'apache',
dominio => 'sei.organizacao.gov.br',
seidados => '/var/www/seidados',
mysql_ipaddr => '127.0.0.1',
sei_mysql_pass => 'senha',
sip_mysql_pass => 'senha',
sigla_organizacao => 'GOV',
nome_organizacao => 'Organizacao',
}
Git
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.
Setup
Em seu CentOS 6 instale o repositório do puppet
# yum install http://yum.puppetlabs.com/el/6/PC1/x86_64/puppetlabs-release-pc1-0.9.2-1.el6.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/environments/production/modules
# git clone https://bitbucket.org/culturagovbr/puppet-sei-aio.git seiaio
Instale os modulos que são dependencia direta
# puppet module install puppetlabs-apache
# puppet module install puppetlabs-vcsrepo
# puppet module install puppetlabs-inifile
# puppet module install puppetlabs-mysql
Depois de instalar os módulos 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.organizacao.gov.br',
git_repo => 'git@bitbucket.org:instruct/seiaio.git',
sigla_organizacao => 'ORG',
nome_organizacao => 'Organizacao Federal',
}
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.
Devido ao download do openjdk e do LibreOffice a instalação pode levar bastante tempo dependendo da sua conexão de internet.
Em testes feitos em um link de 120 Mbits o puppet levou 21 minutos para finalizar a instalação do SEI, 18 minutos praticamente fazendo download.
Em testes com repositório local de pacotes RPM (sem necessidade de download da internet) a instalação toda pode variar entre 120 e 360 segundos.
Acesso
Após instalar o SEI será necessário configurar no /etc/host do seu desktop linux/unix/mac em que está rodando o hypervisor.
ip_da_vm_rodando_sei sei.organizacao.gov.br
Isso é necessário para resolver o nome no navegador, depois de configurar o arquivo hosts, feche e abra o navegado e entre no sei. O usuário para acesso inicial é teste/teste. Siga o manual do SEI depois disto.
Pendente
- Criar smoking testes para classes puppet
- Criar testes unitários para classes puppet
- Criar arquivo com metadados para o módulo
Referências
Sobre o SEI/PEN
Sobre o módulo