# SEI AIO Módulo Puppet SEI AIO (All-in-One). #### Tabela de conteudo 1. [Overview](#overview) 2. [Compatibilidade](#compatibilidade) 3. [Setup](#setup) 4. [Uso](#uso) 5. [Limites](#limites) 6. [Pendende](#pendente) 7. [Referencias](#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 * Guto Carvalho (gutocarvalho@instruct.com.br) * Miguel Filho (gutocarvalho@instruct.com.br) ## 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 * 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 7 instalado * Acesso a internet para instalação de pacotes * Código fonte do SEI em algum repositório GIT ## 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) ```puppet 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) ```puppet class { 'seiaio::seifontes': docroot => 'git@bitbucket.org:instruct/seiaio.git', sei_git_repo => $git_repo, } ``` #### declarando classe seiaio::httpd (classe privada) ```puppet class { 'seiaio::httpd': docroot => $docroot, owner => $owner, group => $group, dominio => $dominio, seidados => $diretorio_seidados, } ``` #### declarando classe seiaio::database (classe privada) ```puppet 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) ```puppet class { 'seiaio::php': docroot => '/var/www/html/seiapp', } ``` #### delcarando classe sei::cron (classe privada) ```puppet class { 'seiaio::cron': docroot => '/var/www/html/appsei', } ``` #### 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 ```puppet 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 2. Criar testes unitários para classes puppet 3. Criar testes de aceitação para classes puppet ## Referências