O documento descreve a ferramenta Puppet para automação de configuração de infraestrutura. Puppet permite definir o estado desejado de recursos como arquivos, pacotes e serviços de forma declarativa através de manifestos e módulos. Ele também suporta várias plataformas como Linux, Windows e outros.
2. $ whoami
● Péricles S. da C. Jr.
● Bolsista na CRI/STI UFBA
● Sysadmin Voluntário no
grupo GRACO/DCC-UFBA
● Entusiasta FOSS (Debian
GNU/Linux)
3. Automação de Infraestrutura
● Processo de criar scripts de ambientes
● Replicação de configuração no ativo da Instituição
● Automatização das atividades operacionais.
● Infraestrutura Ágil.
○ Ter qualquer ambiente, seja PaaS, IaaS ou servidores físicos e
independente do fornecedor utilizado.
● Gerência de configurações.
4. Como é feita geralmente...
● Configuração manual de ambientes (humano)
● Processos propensos à erros
● Aumento dos tempos de ciclo
● Impossibilidade de escalabilidade
5. Tarefas Repetivas
● Criação de usuários em servidores
● Elaboração de scripts
● Configuração de serviços
● Configuração de monitoramentos
● Criação de imagens de ambientes
● Configuração do sistema
operacional
● Instalação, atualização e remoção
de pacotes
6. O que é o Puppet?
● Ferramenta com versão Opensource, sob
licença Apache
● Desenvolvida pelo Luke Kanie (CEO da
Puppetlabs )
● Foco na Gerência de configurações
● Linguagem DSL declarativa
● Outras alternativas:
○ Chef
○ Salt
○ CFEngine
○ Ansible
9. Legal não é! Mas pra que usar isso?
● Escalabilidade
● Gerenciamento de
configurações:
○ Laboratórios (Ex: Desktops
e Notebooks)
● Administrar Infraestrutura de
grande escala
● Replicação de ambiente de
produção
● Distribuição de atualizações
críticas
10. Imperativa vs. Declarativa
● Imperativa:
● Descrição de um algoritmo
ou processo específico;
● Declarativa:
● Descrição do estado ou
objetivo a ser alcançado.
11. Exemplo
● Imperativa
○ “Faça um sanduíche”
○ Step by step
○ Receitas, procedimentos ou
algoritmos
● Declarativa
○ “Desejo um sanduíche”
○ Deve existir um saduíche
com pão francês, presunto,
alface, tomate e etc, após
essa apresentação no
coffe-break para o
palestrante!
13. Componentes Descrição
Agente Um daemon executando que coleta informações sobre o nó e envia essas informações ao
Puppet principal.
Catalog Compilação de fatos que especificam como configurar o nó.
Facts Dados sobre um nó, enviados pelo nó para o Puppet Server.
Manifest Descreve recursos e as dependências entre eles.
Recursos Por exemplo, o pacote, arquivo ou serviço.
Módulo Relacionados a grupos (em um diretório). Por exemplo, um module pode definir como um
banco de dados como o MySQL é instalado, configurado e executado.
Classes Coleção de recurso no puppet. Uma unidade lógica aplicada pelo agente através de uma
definição de um nó.
Nó Um host gerenciado. Os nós são definidos como classes, mas contêm o nome do host ou
nome completo do domínio.
Puppet Server O servidor que gerencia todos os nós do Puppet.
16. Declaração de um nó
node /^node[0-9][0-9].lab$/ {
$rede= "homologacao"
include apache
include tomcat
include ntp
include aliases
include openjdk_jre
}
31. class role::logserver {
include profile::java::jre
include profile::elasticsearch
include profile::logstash
include profile::kibana
include profile::logging
Class['profile::java::jre'] -> Class['profile::elasticsearch']
Class['profile::elasticsearch'] -> Class['profile::logstash']
Class['profile::logstash'] -> Class['profile::kibana']
}
32. Pensamento do dia!
O “sucesso” do projeto de um
bolsista depende do mouse ( by
Madson )