• Nenhum resultado encontrado

CISL Brasília/DF. Infraestrutura ágil com Puppet por Guto Carvalho

N/A
N/A
Protected

Academic year: 2021

Share "CISL Brasília/DF. Infraestrutura ágil com Puppet por Guto Carvalho"

Copied!
169
0
0

Texto

(1)

Brasília/DF

Infraestrutura ágil com Puppet por Guto Carvalho

CISL 2014

(2)

José Augusto (Guto) Carvalho

Consultor/SysAdmin/DevOp (LPIC-3, RHCE e PCP-201); 14 anos de experiência com TI e FOSS;

Blogueiro TI/FOSS há 13 anos (gutocarvalho.net);

Atuação em vários projetos de Governo no MDA, MINC, EBC/RADIOBRÁS, MPS/DATAPREV, ITI/PR, CAIXA, MD/SIPAM, DETRAN/DF;

Entusiasta DevOps (sysadmin em recuperação) desde 2010.

whoami

(3)

Plano de Trabalho

70 minutos de apresentação 25 minutos de demonstração 25 minutos para perguntas

Faça perguntas quando quiser

(4)

Infraestrutura Ágil

(5)

Infraestrutura ágil é um conceito ainda em

formação, mas ele envolve principalmente

gerência de configurações, orquestração,

provisionamento dinâmico e metodologias

ágeis de trabalho em grupo.

(6)

Nesta apresentação focaremos na gerência

de configurações, uma de suas mais

importantes características.

(7)
(8)

Virtualização

Hoje podemos rodar centenas de servidores virtuais, com d i f e r e n t e s s i s t e m a s operacionais em um mesmo host em nosso datacenter

(9)

Cloud Computing

Hoje podemos rodar todos os nossos sistemas em nodes (vms) em nuvens públicas ou privadas e nosso parque pode aumentar ou diminuir de forma dinâmica e automática

(10)

Diminuição de Custos

As empresas hoje buscam aumentar a qualidade de seus produtos e serviços mas sem aumentar os seus custos de manutenção e operação

(11)

Agilidade e Flexibilidade

As empresas querem hoje ferr amentas que lhes permitam atuar de forma ágil e flexível dentro do seu negócio, algo que se adapte as suas necessidades de forma plena e concreta

(12)

Novo tipo de profissional

As empresas estão buscando no mercado profissionais m u l t i - d i s c i p l i n a r e s , dinâmicos, criativos, com domínio em diferentes tecnologias para dar vazão a demandas e trabalhar com inovação

(13)
(14)

Desafios na TI de hoje

Como administrar parques crescentes?

Como manter nosso parque padronizado? Como manter nosso parque seguro?

Como manter a qualidade do serviço executado?

Como manter o custo de manutenção baixo, sem perder qualidade? Como saber quantos profissionais eu preciso para administrar meu ambiente?

(15)
(16)

Mjolnir Solutions Inc.

Possui um datacenter em sua sede com 750 VMs Contratou 50 Nodes Cloud (IASS)

(17)
(18)

Dúvidas comuns

Como faço mudanças rápidas em diversos ambientes e servidores? Como faço para atender demandas em tempo hábil?

Como faço para manter a documentação atualizada?

(19)
(20)

Depende de como você

faz a administração!

(21)

Sysadmin Artesão

Hoje ainda é comum encontrar sysadmins que trabalham com administração manual, utilizando um método quase artesanal, executando tarefas repetitivas cotidianamente

(22)

Atualização de Pacotes?

ssh servidor001.dominio.local ssh servidor002.dominio.local ssh servidor003.dominio.local … ssh servidor800.dominio.local

(23)

Instalação de Apps?

ssh servidor001.dominio.local ssh servidor002.dominio.local ssh servidor003.dominio.local … ssh servidor800.dominio.local

(24)

Criação de Usuários?

ssh servidor001.dominio.local ssh servidor002.dominio.local ssh servidor003.dominio.local … ssh servidor800.dominio.local

(25)

Tarefas Repetitivas

Criação de usuário em servidores Elaboração de scripts

Configuração de serviços

Configurações de monitoramento Criação de imagens de ambientes

Configuração do sistema operacional

(26)

Exemplo de processo 1

Atualização de um agente de monitoramento (ubuntu) ssh servidor001.dominio.local

sudo -i

apt-get install agente-monitoramento-2.0

vim /etc/agente-monitoramento/agent.conf

restart agente-monitoramento

(27)

Exemplo de processo 2

Atualização de um agente de monitoramento (centos) ssh servidor002.dominio.local

su -

yum install agente-monitoramento-2.0

vim /etc/agente-monitoramento/agent.conf

service agente-monitoramento restart

(28)

Exemplo de processo 3

Atualização de um agente de monitoramento (debian) ssh servidor003.dominio.local

su -

aptitude install agente-monitoramento-2.0

vim /etc/agente-monitoramento/agent.conf

/etc/init.d/agente-monitoramento restart

(29)

Exemplo de processo 4

Atualização de um agente de monitoramento (fedora) ssh servidor004.dominio.local

sudo -i

yum install agente-monitoramento-2.0

vim /etc/agente-monitoramento/agent.conf

systemctl restart agente-monitoramento

(30)

Cada sistema operacional lida de uma

forma muito particular com seus recursos,

e todas estas exceções precisam ser

cuidadosamente avaliadas e tratadas.

(31)

O uso de scripts ajuda, mas o sysadmin vai

passar a dividir seu tempo administrando

VMs e ajustando seus scripts para atender

as mais diferentes exceções.

(32)

Fatalmente uma das duas

atividades será negligenciada,

isto vai gerar falhas e

problemas.

(33)

Cada sysadmin executará demandas

de uma forma distinta, isto gera um

ambiente sem padrões, impossível

de rastear mudanças.

(34)

A medida que o parque aumentar

ficará cada vez mais difícil

administrar, identificar e corrigir

problemas.

(35)

Mudanças estruturantes que

afetarem todo parque levarão mais

tempo para serem concluídas pois

no percurso muitas coisas vão

quebrar.

(36)

Com o excesso de demandas e

ambiente crescendo cada vez mais,

documentar perderá prioridade e

isto criará um ambiente de alto

risco, obscuro e desconhecido

(37)
(38)

Sabe como o sysadmin se sente ao

atuar em um incidente em ambiente

não documentado? Acompanhe…

(39)
(40)
(41)
(42)

Documentação é importante

para você saber lidar com

uma situação inesperada

(43)
(44)

Percepções da empresa

Aumenta o custo de manutenção devido a retrabalho Aumenta o desgaste físico e psíquico da equipe

A produtividade da equipe diminui (entregas)

A qualidade do serviço oferecido diminui (uptime) Ocorre uma grande rotatividade de funcionários

(45)

Tarefas Repetitivas

(46)

Retrabalho

(47)

Retrabalho

(48)

Retrabalho

Para ambos significa menor produtividade e menor qualidade no que se faz e no que se entrega.

(49)

Desperdício de tempo

é uma característica comum n e s t e m o d e l o d e a d m i n i s t r a ç ã o d e infraestrutura

(50)

Exemplo

O cliente deseja instalar um agente de monitoramento em todas as 800 VMs, removendo qualquer traço do produto antigo no final do procedimento

(51)

Procedimento para instalar o agente

Acessar servidor via ssh

Adicionar repositório APT/YUM Instalar pacote

Ajustar arquivo de configuração Reiniciar agente

(52)

Instalação de

agente de

monitoramento

800 máquinas

10 minutos por máquina 8000 minutos ou 133 horas 16 dias trabalhando 8 h.p.d

(53)

Considerando o modelo manual de

administração e o retrabalho

decorrente de falhas humanas, teremos

um analista focado em uma demanda

simples por cerca de 1 mês.

(54)

O modelo manual é

(55)

Como resolver

estes problemas?

Como obtenho controle e padronização em meu

(56)
(57)

Gerência de Configurações

Padronização Controle Integridade Produtividade Agilidade

(58)

Puppet

Ferramenta de nova geração que implementa gerência de

configurações para seu ambiente.

(59)

Puppet em poucas palavras

É documentação executável

Nos permite parar de administrar e começar a desenvolver nossa infra Sintaxe simples, prática e natural para sysadmins

(60)

Sobre a ferramenta

Ferramenta Open Source - Apache License

Ferramenta mantida pela empresa Puppetlabs Suporte comercial

Criado por Luke Kaines (CEO e Fundador Puppetlabs)

Cases de uso com grandes players (HP, CISCO, VMWARE...) Recebeu pesados investimentos em 2012/2013

(61)
(62)
(63)
(64)

Tech Specs

Escrito em Ruby

Extensível usando código Ruby

Funciona em modo autônomo (sem servidor) Funciona em modo cliente e servidor

Usa RESTful API

(65)
(66)
(67)
(68)
(69)

Arquitetura

(70)

O Puppet pode funcionar em modo

masterless, isto significa sem

servidor. Você pode aplicar uma

configuração do Puppet diretamente a

um sistema operacional apenas com o

agente instalado.

(71)

O Puppet também funciona em modo

cliente e servidor. Isto significa que vicê

instalará o puppet

master em

alguma VMs e seus agentes irão se

comunicar com ele para obter

configurações.

(72)

Existem cenários de uso de Puppet

masterless distribuído, usando GIT.

Neste modelo as configurações do

Puppet são obtidas via GIT e o agente é

acionado via cron periódicamente

(73)

Tratamento de informações

(74)

Todas as informações de uma sistema

operacional, seja um pacote, usuário,

arquivo ou serviço são consideradas um

'dado' para o puppet.

(75)

Quando construímos configurações,

estas são convertidas em catálogos

XML, estes por sua vez são lidos pelos

agentes e a configuração é então

aplicada ao sistema operacional.

(76)

Entenda como funciona

(77)
(78)

Tudo é feito pelo agente localmente, o

servidor não se conecta na máquina

para aplicar as configurações.

(79)

O servidor puppet é apenas o

repositório de configurações, ele tem

apenas o dever de construir e enviar o

catálogo quando isso for solicitado por

um agente.

(80)

Abstração

(81)

Resource Abstraction Layer

Camada de Abstração de Recursos Fale o que você quer que seja feito Não se preocupe em como será feito

(82)
(83)
(84)
(85)

O Puppet é orientado a estados, nós

criamos configurações definindo estes

e s t a d o s , é u m a v e r d a d e i r a

(86)

Idempotência

(87)

Puppet na rede

(88)

Modo cliente e servidor

O agente gera um certificado digital

O master precisa autorizar o certificado

Sem autorização o agente não pode se comunicar Toda a comunicação entre agente e master é segura

(89)

Puppet Visão em Rede

Puppet Master

Puppet Agent

8140 TCP
 puppet agent -t SSL envio do 
 catálogo

(90)

Fluxo Cliente/Servidor

Instalação do node

(91)

Fluxo Cliente/Servidor

Instalação do node

Inicialização do puppet

(92)

Fluxo Cliente/Servidor

Instalação do node Geração de Certificado Inicialização do puppet

(93)

Fluxo Cliente/Servidor

Instalação do node Geração de Certificado Envio de Certificado Inicialização do puppet

(94)

Fluxo Cliente/Servidor

Instalação do node Geração de Certificado Master Assina Certificado Envio de Certificado Inicialização do puppet

(95)

Fluxo Cliente/Servidor

Instalação do node Geração de Certificado Agente Sincroniza Master Assina Certificado Envio de Certificado Inicialização do puppet

(96)

Fluxo Cliente/Servidor

Instalação do node Geração de Certificado Agente Sincroniza Master Assina Certificado Envio de Certificado Inicialização do puppet

Modalidades de Assinatura de Certificado

Assinatura pode ser manual



Assinatura pode ser automática por domínio



Assinatura pode ser automática em qualquer requisição


(97)

O agente se comunica com o

(98)

Configurações Voláteis e Dados Puppet

Master

Módulos Estáticos

Visão ampla do Puppet

LDAP

DNS

MONIT SYSLOG

JBOSS

APACHE MYSQL

PGSQL

Puppet Agents

Camada de Aplicação

(99)
(100)

Recursos do Puppet

Resource Types Parâmetros e Meta-parâmetros Templates e Definições Classes e Módulos Funções e Condicionais

(101)

Puppet Resource Types

Arquivos e Diretórios Usuários Alias Pacotes Serviços ! Yum Repos Augeas Hosts SSH Cron

(102)

Resource Type: Packages

Suporte a 23 tipos de provedores de pacotes Faz a abstração do OS

Declare se o pacote deve estar presente ou ausente

Declare se o pacote deve

sempre estar em sua última versão

(103)

Resource Type: Services

Suporta 11 tipos de sistemas INIT para inicializar serviços Declare se um serviço deve estar sempre rodando

Declare se um serviço deve ser carregado no boot

Declare se um serviço depende de um pacote ou arquivo

(104)

Resource Type: File

Especifique permissões e owners Declare arquivos, diretórios e links Controle de mudanças usando até 15 tipos de checksums

(105)
(106)

Instala, Configura e Inicia

instalar um pacote!

ativar um serviço no boot!

copiar arquivo de configuração!

iniciar serviço instalado

(107)

Instala, Configura e Inicia

# aptitude install apache2! # insserv apache2!

# cp ~/httpd.conf /etc/apache2/! # invoke-rc.d apache2 start

(108)

Instala, Configura e Inicia

# yum install httpd!

# chkconfig httpd on!

# cp ~/httpd.conf /etc/httpd/conf/! # service httpd start

(109)
(110)

Puppet Manifests

Arquivos com extensão.pp, neles expressamos nossas necessidades utilizando a sintaxe declarativa do Puppet

(111)

package { 'apache2':! ensure => present,! }!  ! service { 'apache2':! ensure => running,! enable => true,! }! ! file { '/etc/apache2/httpd.conf':! ensure => present,! mode => ‘0644’,! owner => ‘root’,! group => ‘root’,! ensure => “puppet:///files/apache/httpd.conf”,! }

(112)

package { 'apache2':! ensure => present,! }!  ! service { 'apache2':! ensure => running,! enable => true,! }! ! file { '/etc/apache2/httpd.conf':! ensure => present,! mode => ‘0644’,! owner => ‘root’,! group => ‘root’,! ensure => “puppet:///files/apache/httpd.conf”,! }

(113)

package { 'apache2':! ensure => present,! }!  ! service { 'apache2':! ensure => running,! enable => true,! }! ! file { '/etc/apache2/httpd.conf':! ensure => present,! mode => ‘0644’,! owner => ‘root’,! group => ‘root’,! ensure => “puppet:///files/apache/httpd.conf”,! }

resource type

parameter

title

value

(114)

A mesma configuração atende a

diversos sistemas operacionais, a

sintaxe é simples e direta. É uma

declaração de estados que o Puppet vai

interpretar e aplicar.

(115)
(116)
(117)

Declarando um node (site.pp)

nodeservidor.dominio” {! include linux-server! include module! } nodebalancer.dominio” {! include linux-server! include cyrus::backend! include postfix::hub
 include haproxy::mailproxy! }

(118)

Apenas com as informações do node, já

podemos entender o que ele faz e

quais ferramentas o puppet gerencia

nele, é outro tipo de documentação.

(119)

Variáveis e Fatos

Fatos (facter) vimpackage => vim-puppet, ! apacheservice => apache2, ! ntpconfrhel => ntp.conf.rhel, ! servername => $facts[fqdn], Constantes e Variáveis domain fqdn
 hostname interfaces ipaddress_eth0 ipaddress_eth1 ipaddress_lo lsbdistid lsbdistrelease => hacklab, => puppetmaster.hacklab, => puppetmaster, => eth0,eth1,lo, => 10.0.2.15, => 192.168.56.150, => 127.0.0.1, => debian, => 6.0.5,

(120)

Condicionais

case $operatingsystem {! CentOS,RedHat: { ! $package_name = 'ntp',! $service_name = 'ntpd',! $conf_file = 'ntp.conf.el',! }! Debian,Ubuntu: { ! $package_name = 'ntp',! $service_name = 'ntp',! $conf_file = 'ntp.conf.debian',! }! }! ....

(121)

Condicionais

if $operatingsystem == '"CentOS" {! $package_name = 'ntp',! $service_name = 'ntpd',! $conf_file = 'ntp.conf.el',! }!

elseif $operatingsystem == 'Debian' { ! $package_name = 'ntp',!

$service_name = 'ntp',!

$conf_file = 'ntp.conf.debian',! }!

else {


notify { “Sistema desconhecido”: }! }!

(122)

Condicionais

if ( $operatingsystem == 'Debian' ) and ( $lsbdistcodename == 'squeeze' ) {! !

bloco de código! !

(123)

Definições

proxy { 'Filial' :! http_port ! squid_mode ! squid_hostname ! cache_mem ! maximum_object_size_in_memory ! maximum_object_size ! memory_replacement_policy ! cache_replacement_policy ! cache_dir ! cache_mgr ! cache_effective_user ! cache_effective_group ! dns_nameservers ! ips_squid ! } => '3128',! => 'transparent',! => 'proxy.hacklab',! => '2 GB',! => '6 MB',! => '128 MB',! => 'heap GDSF',! => 'heap LFUDA',! => 'aufs /var/spool/squid 1024 16 256',! => ‘monitora@hacklab.local’,! => 'proxy',! => 'proxy',! => '127.0.0.1 10.61.12.2 172.16.1.1',! => '127.0.0.1 192.168.12.3',

(124)

Definições

proxy { 'Matriz' :! http_port ! squid_mode ! squid_hostname ! cache_mem ! maximum_object_size_in_memory ! maximum_object_size ! memory_replacement_policy ! cache_replacement_policy ! cache_dir ! cache_mgr ! cache_effective_user ! cache_effective_group ! dns_nameservers ! ips_squid ! } => '3128',! => 'transparent',! => 'proxy.hacklab',! => '8 GB',! => '6 MB',! => '512 MB',! => 'heap GDSF',! => 'heap LFUDA',! => 'aufs /var/spool/squid 8096 16 256',! => ‘monitora@hacklab.local’,! => 'proxy',! => 'proxy',! => '127.0.0.1 10.61.12.2 172.16.1.1',! => '127.0.0.1 192.168.12.3',

(125)

Templates

myorigin = <%= hostname %>!

mydestination = $myhostname, ..., localhost, <%= fqdn %>

Trecho do template postfix/main.cf

myorigin = servidor.dominio!

mydestination = $myhostname, ..., localhost, servidor.dominio

(126)
(127)

Base Class

class linux-server {! include sysadmin-utils! include zabbix-agent! include ntpconf! include locales! include hosts! include users! include localmta! include vimrc! include backup-agent! include apt-repos! }

(128)

Node default

node default {!

include linux-server! }

(129)
(130)
(131)
(132)
(133)
(134)
(135)

Outros projetos Puppetlabs

PuppetDB (coletor de dados) Razor (provisionador)

Hiera (separa dados de código) Facter (fatos do sistema)

(136)
(137)
(138)
(139)
(140)

Posso fazer mudanças em

tempo real?

(141)

Marionette Collective

Orquestrador de nodes

Execução de Tarefas Paralelas

Interação com centenas de nodes Inventário descentralizado

Leitura de meta-dados do Puppet Similar a Fabric e Capistrano

(142)
(143)

Ferramentas de provisionamento VM

! Foreman Vagrant Razor Sprinkle Puppet Enterprise

(144)

Ferramentas de provisionamento SW

! Ansible Salt Capistrano Fabric

(145)
(146)
(147)

A o e s c r e v e r m o s a s n o s s a s

configurações, estamos expressando o

que desejamos ter em nossos nodes,

com isto, já estamos construindo nossa

documentação.

(148)

Aos escrevermos uma configuração,

estamos definindo como aquilo de ser

instalado, configurado e como deve

funcionar. Toda a equipe passa a usar a

mesma receita, isto significa que

teremos processos padronizados.

(149)

O Puppet oferece recursos para você

fazer backup e restore de arquivos

modificados, portanto, você tem a

segurança de poder recuperar

ambientes caso precise.

(150)

Ao adotar Puppet você não vai mais

sentir vontade de executar nada sem

ele, tudo já nascerá automatizado e

controlado, com processos e

documentação instantânea.

(151)
(152)

Um sysadmin que não usa Puppet

consegue administrar no máximo 30

servidores, com alguma dificuldade e

muito retrabalho.

(153)

Um sysadmin que usa Puppet consegue

administrar entre 250 e 1000

ser vidores com facilidade, a

quantidade vai depender do nível de

automatização e maturidade do

profissional e sua equipe.

(154)

Para administrar 800 VMs, utilizando

Puppet, você precisará de 4 sysadmins,

e afirmo que dependendo do nível de

automação até menos.

(155)

Compare

Ambiente com 800 nodes

modo manual puppet

(156)

Benefícios Reais

Maior produtividade em menor tempo Poucos sysadmins para muitos nodes Diminuição de falhas humanas

Maior controle de todo o seu parque

Diminuição do tempo gasto em mudanças Diminuição do custo de manutenção

(157)

O sysadmin fará jornadas de trabalho

normais, ficará mais tempo com a

família, terá mais qualidade de vida e

com isso irá produzir mais e melhor.

(158)

O negócio de sua empresa vai fluir, ter

m e l h o r q u a l i d a d e , m a i o r

disponibilidade e

menor custo

operacional, sendo gerido por uma

(159)
(160)

Puppetlabs

Suporte Comercial (em inglês)

Programa de treinamento presencial

Programa de certificação para Sysadmins - PCP 201 Programa de certificação para Developers - PCP 301 Puppet Enterprise Dashboard (Gerenciador)

(161)

Puppet em números

700+ pessoas online no canal #puppet da irc.freenode.net 8.500+ repositórios no GitHub 1000+ módulos no PuppetForge 5000+ usuários ativos na lista

puppet-users com 8000+ tópicos de discussão

(162)

Site/Blog http://www.puppetlabs.com http://www.puppetlabs.com/blog/ http://puppet-br.org/ 
 Twitter @puppetlabs @puppetmasterd (luke)
 GitHub http://www.github.com/puppelabs 


Puppet na rede

Google Groups Puppet-camp, puppet-users, puppet-users-br, puppet-dev
 IRC irc.freenode.org #puppet #puppet-br

(163)
(164)

Suporte Oficial Puppetlabs no Brasil

• Empresa especializada em Puppet

• Cursos oficiais, Puppet Enterprise, consultoria e suporte

• 1o Parceiro oficial Puppetlabs Brasil

• 1o empresa com pessoas certificados PCP na América Latina

(165)
(166)

PUPPET COMO SERVIÇO

Gerenciamento de Configuração COMO SERVIÇO

!

Automatizar Infraestrutura de GRANDES CORPORAÇÕES

!

Interface intuitiva focada em AGILIDADE e AUTONOMIA

!

Suporte com PROFISSIONAIS CERTIFICADOS (PCP, RHCE, LPI-3)

!

SERVIÇO PIONEIRO para Gestão de Infraestrutura no Brasil

(167)
(168)
(169)

Linkedin: http://br.linkedin.com/in/gutocarv

E-mail: gutocarvalho@gmail.com Contato

Slides: slideshare.net/gutocarvalho

Blog: gutocarvalho.net

Twitter: @gutocarvalho

http://puppetlabs.com http://instruct.com.br http://configr.com

Referências

Documentos relacionados

Em meio a recentes tensões quanto à coordenação econômica e política entre os três Estados, a cooperação cultural presta o argumento que atrela a consecução da

O enfermeiro, como integrante da equipe multidisciplinar em saúde, possui respaldo ético legal e técnico cientifico para atuar junto ao paciente portador de feridas, da avaliação

 Para os agentes físicos: ruído, calor, radiações ionizantes, condições hiperbáricas, não ionizantes, vibração, frio, e umidade, sendo os mesmos avaliados

Mova a alavanca de acionamento para frente para elevação e depois para traz para descida do garfo certificando se o mesmo encontrasse normal.. Depois desta inspeção, se não

Procedeu-se, assim, uma avaliação dos seguintes itens: proporção da área íntima em relação à área social, espaço para mesa de refeições na cozinha, tamanho e forma das

A escultura é por natureza mais efémera, a própria ideia de uma obra de arte é por natureza mais efémera, e por conseguinte a procura de uma arquitectura

É no começo da década de 1990, com a posse de Fernando Collor de Mello na presidência da República, que o setor carbonífero, viveu o seu pior momento. As privatizações iniciadas

Somente a rápida expansão do gasto público, coordenando outras ações centralizadas pelo planejamento nacional, pode evitar que a crise econômica se transforme em uma