Escolar Documentos
Profissional Documentos
Cultura Documentos
CENTRO DE TECNOLOGIA
DEPARTAMENTO DE ENGENHARIA DE COMUNICAÇÃO
CURSO DE ENGENHARIA DE TELECOMUNICAÇÕES
NATAL-RN
2019
TALLES TAYSON SALDANHA DE FARIAS
NATAL-RN
2019
TALLES TAYSON SALDANHA DE FARIAS
BANCA EXAMINADORA
___________________________________________________
Profº Dr. Gutembergue Soares Da Silva
(Orientador)
____________________________________________________
Profº. Dr. Fred Sizenando Rossiter Pinheiro
(Membro da Banca)
____________________________________________________
Profº. Dr. Antonio Salvio de Abreu
(Membro da Banca)
AGRADECIMENTOS
À minha Família por toda a estrutura necessária para chegar até esse momento, em
especial a minha mãe Maria Apresentação Saldanha, que sempre me incentivou
mesmo diante das dificuldades.
À minha noiva e futura esposa Thalita Freires pela sempre disponibilidade em ajudar
e incentivar nos inúmeros e intermináveis projetos da minha vida.
TI – Tecnologia da Informação
AGRADECIMENTOS................................................................................................................................... 4
RESUMO ................................................................................................................................................... 5
ABSTRACT ................................................................................................................................................. 6
LISTA DE FIGURAS..................................................................................................................................... 7
LISTA DE TABELAS..................................................................................................................................... 8
LISTA DE SIGLAS E ABREVIATURAS ........................................................................................................... 9
SUMÁRIO ................................................................................................................................................ 10
1. INTRODUÇÃO ..................................................................................................................................... 11
2. OBJETIVOS GERAL............................................................................................................................... 12
2.1 OBJETIVOS ESPECÍFICOS ................................................................................................................... 12
3. JUSTIFICATIVA .................................................................................................................................... 13
4. FUNDAMENTAÇÃO TEÓRICA .............................................................................................................. 14
4.1 Governança de TI ......................................................................................................................... 14
4.2 Equipes de infraestrutura/servidores .......................................................................................... 14
4.3 Equipes de Sistemas ..................................................................................................................... 15
4.4 DevOps ......................................................................................................................................... 15
4.4.1 Cultura ................................................................................................................................... 16
4.4.2 Automação ............................................................................................................................ 17
4.4.3 Avaliação ............................................................................................................................... 17
4.4.4 Compartilhamento ................................................................................................................ 17
4.5 Gerência de configuração ............................................................................................................ 17
4.6 IaC (Infraestrutura como código) ................................................................................................. 18
4.7 Extração de configurações ........................................................................................................... 19
4.8 Análise de ferramentas SCM ........................................................................................................ 20
4.8.1 Puppet ................................................................................................................................... 20
4.8.2 Ansible ................................................................................................................................... 22
4.8.3 Chef ....................................................................................................................................... 23
4.8.4 SaltStack ................................................................................................................................ 25
4.9 Comparação das Ferramentas ..................................................................................................... 26
5. METODOLOGIA................................................................................................................................... 28
Descrição da Empresa ........................................................................................................................ 28
5.1 Estrutura Atual ............................................................................................................................. 29
5.2 Problema Conceitual .................................................................................................................... 30
5.3 Projeto .......................................................................................................................................... 31
5.3.1 Escolha do Puppet ................................................................................................................. 31
5.3.2 Análise de Requisitos ............................................................................................................ 32
5.4 Ambiente de teste ........................................................................................................................ 33
5.4.1 Testes Iniciais......................................................................................................................... 33
5.4.2 Servidor Puppet ..................................................................................................................... 34
5.4.3 Instalação do Puppet Master ................................................................................................ 35
5.4.5 PuppetDb............................................................................................................................... 36
5.4.6 Instalação do Puppet Agent .................................................................................................. 37
5.5 Manifestos.................................................................................................................................... 38
5.5.1 Nome do Host ....................................................................................................................... 39
5.5.2 Expressão regular .................................................................................................................. 40
5.5.3 Módulos base ........................................................................................................................ 41
5.5.4 Fatos sobre o sistema............................................................................................................ 42
5.5.4 Código do manifesto ............................................................................................................. 44
5.6 Puppet board................................................................................................................................ 46
6 RESULTADOS ....................................................................................................................................... 48
7 CONCLUSÃO ........................................................................................................................................ 51
REFERÊNCIAS BIBLIOGRÁFICAS .............................................................................................................. 52
ANEXO .................................................................................................................................................... 54
11
1. INTRODUÇÃO
2. OBJETIVOS GERAL
3. JUSTIFICATIVA
A informatização dos sistemas nas empresas gera cada vez mais necessidade
por serviços, essa crescente demanda culmina no crescimento de infraestrutura,
porem nos nossos tempos atuais um desenvolvimento de infraestrutura significa um
crescimento virtuais (Virtualização, clouds, containers, servers). Esse avanço deu
início ao desenvolvimento de tecnologias com objetivos de gerenciar infraestrutura.
4. FUNDAMENTAÇÃO TEÓRICA
4.1 Governança de TI
4.4 DevOps
Fonte: https://instruct.com.br/entenda-cultura-devops/
4.4.1 Cultura
4.4.2 Automação
4.4.3 Avaliação
4.4.4 Compartilhamento
4.8.1 Puppet
A Puppet Labs, criada por Luke Kanies é a empresa por trás do Puppet,
desenvolvido em 2005, é a mais antiga das ferramentas de gerenciamento entre as
citadas nesse trabalho. Desenvolvida em C++/Clojure sob a licença Apache. O Puppet
Fonte: https://puppet.com/
realizadas no sistema cliente bem como impõe o estado desejado em que o ambiente
deverá permanecer.
O Puppet possui uma arquitetura cliente/servidor figura 3, onde o servidor,
chamado Puppet master, controla as informações de configurações, centralizando
todos os manifestos, esses, por sua vez, são verificados periodicamente pelos clientes
que buscam em seu perfil de configuração alteração a serem realizadas.
Os agentes obtêm de suas máquinas o que na linguagem popular do
gerenciamento de configurações são chamados fatos. Fatos são descrições sobre o
estado do sistema operacional e suas configurações (versão, OS, IP, hostname),
essas informações são enviadas para o Puppet master e armazenada no PuppetDB
para uma verificação futura.
Fonte: Própria
intervalo regular (30 minutos por padrão), o que manterá os sistemas sempre no
estado desejado, caso o estado da configuração seja alterado, o agente Puppet
reaplicará sua configuração em intervalos diferentes do padrão.
4.8.2 Ansible
Lançado em 2012 por Michael DeHaan, o Ansible foi criado como uma forma
de busca da simplificação das operações intrínsecas ao gerenciamento de
infraestrutura, segundo Geerling (2014), o Ansible foi criado como uma alternativa a
complexidade de seus concorrentes mais próximos (Puppet e o Chef).
Fonte: https://www.ansible.com/
Fonte: Própria
4.8.3 Chef
A empresa Chef foi fundada em 2008 por Adam Jacob, Barry Steinglass,
Nathan Haneysmith e Jesse Robbins e é a criadora do sistema de gerenciamento de
configuração Chef. A empresa disponibiliza 100% da sua solução como código-fonte
aberto sob a licença Apache 2.0 e possuem também uma versão comercial (Chef
Enterprise Automation Stack ™).
24
Fonte: https://www.chef.io/
Fonte: Própria
4.8.4 SaltStack
Fonte: Própria
O Salt é dividido principalmente em duas funcionalidades, a primeira é
responsável pela manutenção do estado das configurações, ou seja, ele define que
uma determinada configuração deve permanecer no estado desejado inicialmente
como por exemplo a execução de um serviço sempre rodando, caso ela seja alterada
retornará para o estado desejado na próxima varredura. A outra funcionalidade
trabalha como o já mencionado facts que retornar fatos sobre o sistema cliente
podendo assim determinar configurações intrínsecas a esses sistemas.
Facilidade de
Médio Médio Fácil Médio
instalação
Altamente
Escalabilidade Altamente escalável Altamente escalável Altamente escalável
escalável
Cliente/Servi
Arquitetura Cliente/Servidor Cliente Cliente/Servidor
dor
Fonte: Própria
5. METODOLOGIA
Nesse presente capítulo será tratado a forma como a solução escolhida foi
planejada implantada e adaptada para o modelo da empresa alvo, os problemas
encontrados durante o processo e as alternativas escolhidas para superá-los.
Descrição da Empresa
Fonte: http://www.caern.com.br
29
Administração Central
Regional Natal
Regional Mato Grande
Regional Agreste Trairi
Regional Oeste
Regional Alto Oeste
Regional Sertão Central
Regional Seridó
Sistemas municipais
Fonte: http://www.caern.com.br
É nesse ponto que a solução proposta nesse projeto soma-se a solução atual
implementada, gerando um ambiente de completa entrega de processos para atender
as demandas propostas nos objetivos. Como já mencionado, esse projeto teve como
foco uma área de pouca abordagem pelas atuais ferramentas gerenciamento de
configurações disponíveis no mercado, uma automação voltada para parque de
desktops esperasse um denominador comum no que se refere a utilização e utilidade
desse modelo.
5.3 Projeto
Após a revisão literária, o segundo passo foi a elaboração do projeto com base
na estrutura organizacional da empresa. Verificou-se inicialmente que a empresa é
dividida em oito regionais distribuídas pelo estado como mostra a figura 11.
CAERN
Administração Central
Regional Natal
Regional Oeste
Regional Mato Grande
Regional Agreste Trairi
Regional Alto Oeste
Regional Sertão Central
Regional Seridó
Fonte: Própria
empresa CAERN, visto que a mesma utiliza em seu parque de máquinas quase que
em sua totalidade esse sistema.
Requisitos
Fonte: Própria
Considerando que o laboratório possuí apenas 3 maquinas cliente, que tem por
finalidade emular os configurações dispostas no parque de máquinas, foi determinada
uma configuração intermediaria de 2gb de RAM e processador de 2 núcleos.
Essa preocupação se deu pelo fato de o agente ser configurado com o nome
do host servidor master, no caso de se utilizar IP, a mudança de servidor ocasionaria
uma trabalhosa substituição do apontamento para o master em todas as maquinas
com agentes instalados.
JAVA_ARGS="-Xms512m -Xmx512m"
5.4.5 PuppetDb
O PuppetDB é a base de dados utilizada pelo Puppet server, sua inclusão não
é obrigatória ao sistema, o Puppet server pode rodar independente dessa
implementação, porem, para um melhor gerenciamento da informação o PuppetDB é
de fundamental importância para que ocorra o armazenamento de informações dos
nodes.
versão web do Puppet enterprise, como para a versão open source do painel web, o
pupetboard.
Fonte: Própria
38
5.5 Manifestos
1 node 'RNSedbp030336.caern.local' {
2
3 user { 'administrador':
4 ensure => 'present',
5 groups => ['BUILTIN\Administradores'],
6 password => $adminpass,
7 require => Exec['AtivarContaAdmin']
8 }
9 }
Fonte: Própria
40
1
2 #Expressão utilizada para incluir exclusivamente o setor AJU
3
4 node /^(?i)(ADC|RMG|ROE|RNS|RAG|RNN|RSC|RSE|RAO)(AJU)\d+(l|L|).*$/ {
5
6 CODIGO DE EXECUÇÃO
7 }
8
9
10 ## Expressão utilizada para aceitar todos menos AJU
11
12 node /^(?i)(ADC|RMG|ROE|RNS|RAG|RNN|RSC|RSE)(?!AJU)([a-z]+)\d+(l|L|).*$/ {
13
14 CODIGO DE EXECUÇÃO
15
16 }
17
41
Fonte: https://forge.puppet.com/
Fonte: Própria
1 if $facts[os][architecture] == 'x64' {
2 warning('Senha VNC definida')
3 registry_value { 'VNCPassword':
4 path => 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC\S
5 erver\Password',
6 ensure => present,
7 type => binary,
8 data => "b5 6e 2b 1a 48 95 40 d4",
9 }
10 }
11 if $facts[os][architecture] == 'x86' {
12 warning('Senha VNC definida')
13 registry_value { 'VNCPassword':
14 path => 'HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC\Server\Passw
15 ord',
16 ensure => present,
17 type => binary,
18 data => "b5 6e 2b 1a 48 95 40 d4",
19 }
20 }
44
node 'default' {
include caern_vnc
include caern_adminpass
include caern_diretorios
include caern_cert
include caern_app
class caern_adminpass::params {
#Configuração
$adminpass = ‘xxxxxx' #definição da senha
}
46
6 RESULTADOS
Fonte: Própria
Fonte: Própria
7 CONCLUSÃO
Após toda a revisão e aplicação no trabalho é possível afirmar que apesar das
ferramentas de gerenciamento de configuração terem como principal aplicação os
servidores virtuais, clouds e servidores em nuvem, é possível também ser utilizada
com êxito em um parque de desktops clientes, o que valida a proposta do trabalho.
REFERÊNCIAS BIBLIOGRÁFICAS
WEILL, Peter; ROSS, W. Jeanne. Governança de TI: como as empresas com melhor desempenho
administram os direitos decisórios de TI na busca por resultados superiores. São Paulo: Makron
Books, 2006.
WILLIS, John. What Devops Means to Me. CHEF BLOG, [S. l.], p. 1, 16 jul. 2010. Disponível em:
https://blog.chef.io/what-devops-means-to-me/. Acesso em: 11 out. 2019.
SALEEM, Hussain; BURNEY, SM Aqil. Imposing Software Traceability and Configuration Management
for Change Tolerance in Software Production. IJCSNS, v. 19, n. 1, p. 145, 2019.
RAHMAN, Akond; WILLIAMS, Laurie. Source code properties of defective infrastructure as code
scripts. Information and Software Technology, v. 112, p. 148-163, 2019.
MORRIS, Kief. Infrastructure as code: managing servers in the cloud. " O'Reilly Media, Inc.", 2016.
BRIKMAN, Yevgeniy. Terraform: Up & Running: Writing Infrastructure as Code. O'Reilly Media,
2019.
HERMANNS, Joel; STEFFENS, Andreas. The current state of ‘Infrastructure as Code’and how it
changes the software development process. Full-scale Software Engineering, v. 19, 2015.
JOHANN, Sven. Kief morris on infrastructure as code. IEEE Software, n. 1, p. 117-120, 2017.
GARIMELLA, D.; KUMAR, R. Secure Shell-Its significance in Networking (SSH). Int. J. of Application
or Innovation in Engineering & Management, v. 4, n. 3/12, p. 187-196, 2015.
MALDONADO, José Carlos et al. Introduçao ao teste de software. São Carlos, p. 23, 2004
BASTOS, Anderson et al. Base de conhecimento em teste de software. São Paulo, 2007.
53
MANIFESTO. In: DICIO, Dicionário Online de Português. Porto: 7Graus, 2019. Disponível
em: https://www.dicio.com.br/indole/. Acesso em: 02/11/2019.
MICHAEL IV, Louis G. et al. Regexes are hard: Decision-making, difficulties, and risks in programming
regular expressions. In: ACM International Conference on Automated Software Engineering
(ASE). ACM. 2019.
OLIVEIRA, Aline Devitto de. Segurança da Informação nas Organizações: Uma Reflexão
Sobre Sua Importância E Vulnerabilidades. 2017. 37 f. TCC (Graduação) - Curso de Ciência
da Computação, Anhanguera Educacional, Leme, 2017. Disponível em:
<http://repositorio.pgsskroton.com.br/bitstream/123456789/15663/1/ALINE%20DEVITTO%2
0DE%20OLIVEIRA.pdf>. Acesso em: 15 out. 2019.
ANEXO
if $osfamily == 'windows' {
warning('O sistema é compatível com este manifesto')
file { 'c:\Suporte':
ensure => 'directory',
}
file { 'c:\Protheus23':
ensure => directory,
source => 'file://SUPORTE/Protheus/Protheus23',
recurse => true,
}
file { 'c:\Suporte\certificado.ps1':
ensure => file,
source => 'file://SUPORTE/Suporte/_Certificado/certificado.ps1',
recurse => true,
}
exec { 'AtivarContaAdmin':
command => 'Get-LocalUser -Name "admin*" | Enable-LocalUser',
unless => '$text = Get-LocalUser -
Name adm* | select enabled; if ($text.enabled -eq $false) { exit 1 }',
provider => 'powershell'
}
exec { 'certifica':
command => 'certutil -addstore -enterprise -
f "ROOT" \\\SUPORTE\Suporte\\_Certificado\\Fortinet_CA_SSL.cer',
unless => '$certt = Get-ChildItem cert:\LocalMachine\root -
Recurse |Select-String "CN=XXXXXXX" -quiet; if ($certt -ne $true) { exit 1 }',
provider => 'powershell'
}
user { 'administrador':
ensure => 'present',
groups => ['BUILTIN\Administradores'],
password => 'SENHA'
}
$installApps = [
'7zip.install',
'netfx-4.7.1-devpack',
55
'tightvnc']
package { $installApps:
ensure => latest,
provider => 'chocolatey',
}
if $facts[os][architecture] == 'x64' {
warning('Senha VNC definida')
registry_value { 'VNCPassword':
path => 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC\Se
rver\Password',
ensure => present,
type => binary,
data => " Código Hexa ",
}
registry_value { 'VNCControlPassword':
path => 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC\Se
rver\ControlPassword',
ensure => present,
type => binary,
data => " Código Hexa ",
}
registry_value { 'VNCPasswordViewOnly':
path => 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC\Se
rver\PasswordViewOnly',
ensure => present,
type => binary,
data => " Código Hexa ",
}
registry_value { 'VNCUseVncAuthentication':
path => 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC\Se
rver\UseVncAuthentication',
ensure => present,
type => dword,
data => "00000001",
}
registry_value { 'VNCUseControlAuthentication':
path => 'HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\TightVNC\Se
rver\UseControlAuthentication',
ensure => present,
type => dword,
data => "00000001",
}
}
if $facts[os][architecture] == 'x86' {
warning('Senha VNC definida')
registry_value { 'VNCPassword':
56
registry_value { 'VNCUseVncAuthentication':
path => 'HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC\Server\UseVncA
uthentication',
ensure => present,
type => dword,
data => "00000001",
}
registry_value { 'VNCUseControlAuthentication':
path => 'HKEY_LOCAL_MACHINE\SOFTWARE\TightVNC\Server\UseCont
rolAuthentication',
ensure => present,
type => dword,
data => "00000001",
}
}
} else {
warning('Esse manifesto é compativel apenas com sistemas Windows')
}