|
|
Publicado em 20/10/2014 09:47:45
|
|
|

1. Introdução ao Puppe
Administradores de sistemas frequentemente ficam presos em uma série de tarefas repetitivas: atualizar pacotes, gerenciar arquivos de configuração, serviços de sistema, tarefas cron, adicionar novas configurações, corrigir bugs, etc. Essas tarefas costumam ser repetitivas e ineficientes, e a primeira resposta para resolvê-las é automatizá-las, fazendo com que scripts personalizados apareçam. Devido à complexidade do ambiente, scripts e aplicações personalizados são repetidamente desenvolvidos e é difícil acomodar múltiplas plataformas, e flexibilidade e funcionalidade são difíceis de garantir, então surgiram ferramentas automatizadas de gerenciamento de configuração como o Puppet.
No mundo open source, existem muitas ferramentas de configuração para escolher, e alguns dos principais produtos nesse espaço são:
Puppet (http://puppet.reductivelabs.com/): Uma ferramenta de gerenciamento de configuração escrita em Ruby que utiliza a arquitetura C/S para configurar o cliente em linguagem declarativa. Cfengine (http://www.cfengine.org): Uma das primeiras ferramentas de configuração open source lançadas, lançada em 1993, também é uma arquitetura C/S, geralmente usada em instituições educacionais. LCFG(http://www.lcfg.org/): Uma ferramenta de gerenciamento de configuração para arquiteturas C/S que usa XML para definir configurações. Bcfg2: Uma ferramenta de gerenciamento de configuração para arquitetura C/S escrita em Python que utiliza especificações e respostas do cliente para configurar o host alvo.
Este documento é dedicado a descrever como usar o Puppet para gerenciar seu host, aplicações, programas em segundo plano e diversos serviços.
Sobre Puppet:
1. Para que serve o puppet?
Puppet é uma ferramenta de gerenciamento de configuração de sistemas baseada em Ruby de código aberto que se baseia na arquitetura de implantação C/S. O principal desenvolvedor é Luke Kanies, que segue a licença de direitos autorais GPLv2. Desde 1997, Kanies está envolvido na administração de sistemas UNIX, e o desenvolvimento do Puppet surgiu dessa experiência. Insatisfeito com as ferramentas de configuração disponíveis, Kanies começou a desenvolver ferramentas no laboratório Reductive entre 2001 e 2005. Logo, a Reductive Labs lançou seu produto principal, Puppet.
2. Características do Pupput
Muitas ferramentas de gerenciamento de configuração do sistema funcionam de forma muito semelhante, como o cfengine. O que torna a Marioneta única?
A sintaxe do Puppet permite criar um script separado para construir um usuário em todos os seus hosts alvo. Todos os hosts alvo interpretarão e executarão o módulo em sequência usando a sintaxe aplicável ao sistema local. Por exemplo, se essa configuração for executada em um servidor Red Hat, crie um usuário usando o comando useradd; Se essa configuração for executada em um host FreeBSD, o comando adduser é usado.
Outro aspecto notável de Puppet é sua flexibilidade. Devido à natureza do software open source, você pode obter livremente o código-fonte do Puppet e, se encontrar problemas e tiver essa capacidade, pode modificar ou aprimorar o código do Puppet para se adequar ao seu ambiente. Além disso, desenvolvedores comunitários e doadores continuam aprimorando as capacidades da Puppet. Uma grande comunidade de desenvolvedores e usuários também está comprometida em fornecer documentação e suporte técnico para o Puppet.
Pupper também é fácil de escalar. Suporte a pacotes personalizados e configurações especiais do ambiente do sistema podem ser adicionados rápida e facilmente ao instalador Puppet.
3. Modo de funcionamento do fantoche
Puppet é uma ferramenta de gerenciamento de configuração da arquitetura C/S que instala o pacote puppet-server (conhecido como Puppet master) em um servidor central. Instale o software cliente Puppet (chamado Cliente Puppet) no host alvo que precisa ser gerenciado. Quando o cliente se conecta ao pupet master, o arquivo de configuração definido no pupet master é compilado e então executado no cliente. Por padrão, cada cliente se comunica com o servidor a cada meia hora para confirmar a atualização das informações de configuração. Se houver novas informações de configuração ou informações de configuração alteradas, a configuração será recompilada e publicada para cada cliente para execução. Você também pode ativamente acionar uma atualização das informações de configuração no servidor para forçar cada cliente a configurá-lo. Se as informações de configuração do cliente forem alteradas, ele pode obter a configuração original do servidor para corrigi-las.
Gerenciamento de Configuração: Instalação e Uso de Marionetes (1)
4. O futuro da Marionche
Por fim, o Puppet é uma ferramenta jovem que ainda está em desenvolvimento. A comunidade de Marionetes está crescendo rapidamente, e muitas novas ideias estão sendo constantemente incorporadas, levando a desenvolvimentos, atualizações e módulos a serem apresentados diariamente.
2. Configuração e instalação (Puppet 2.6.4 CentOS 5.4 instalação):
Configure o repositório no servidor fantoche e no cliente: rpm - Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm [root@puppetmaster ~]# vi /etc/yum.repos.d/epel.repo Adicione a: [boneco epel] nome=fantoche epel baseurl=http://tmz.fedorapeople.org/repo/puppet/epel/5/$basearch/ habilitado=0 gpgcheck=0
Adicione o repositório puppet.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/puppet.repo [puppetlabs] name=Pacotes Puppet Labs baseurl=http://yum.puppetlabs.com/base/ habilitado=0 gpgcheck=0
Instalação do Mestre de Marionetes: [root@puppetmaster ~]# yum --enablerepo=epel,epel-puppet install puppet-server
Modifique os hosts e adicione os dois registros a seguir: [root@puppetmaster ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com fantoche 192.168.0.100 puppetclient.leju.com
Configurando o Puppet: [root@puppetmaster ~]# cd /etc/puppet/ [root@puppetmaster puppet]# vi puppet.conf
[principal] # O diretório de registro dos fantoches. # O valor padrão é '$vardir/log'. logdir = /var/log/fantoche
# Onde os arquivos PID da Marionete são guardados. # O valor padrão é '$vardir/run'. rundir = /var/corre/fantoche
# Onde os certificados SSL são guardados. # O valor padrão é '$confdir/ssl'. ssldir = $vardir/ssl
[agente] # O arquivo em que o fantoche armazena uma lista das classes # Associado à configuração recuperada. Pode ser carregado em # o executável separado ''puppet'' usando o ''-loadclasses'' # Opção. # O valor padrão é '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Onde o puppetd armazena em cache a configuração local. Um # extensão indicando o formato do cache é adicionada automaticamente. # O valor padrão é '$confdir/localconfig'. localconfig = $vardir/localconfig Servidor = puppetmaster.leju.com relatório = verdadeiro ouvir = verdadeiro
[mestre] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY autosign = verdadeiro relatórios = armazenar
[root@puppetmaster fantoche]# vi fileserver.conf [arquivos] path /etc/puppet/files permitir *
[módulos] permitir *
[plugins] permitir *
[root@puppetmaster puppet]# mkdir /etc/puppet/files
[root@puppetmaster marionete]# CD manifesta/ Create site.pp, que é o arquivo de configuração de entrada de marionete: [root@puppetmaster manifesta]# vi site.pp importar "modules.pp" importar "roles.pp" importar "nodes.pp"
# Configurações gerais para tipos padrão Exec { path => "/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin" }
filebucket { main: server => "puppetmaster.leju.com" } Arquivo { backup => principal }
Create modules.pp para importar módulos: [root@puppetmaster manifesta]# vi modules.pp "teste" de importação
Crie roles.pp para definir papéis de servidor: [root@puppetmaster manifesta]# vi roles.pp classe base { incluir teste
}
Crie nodes.pp para configurar os nós servidores: [root@puppetmaster manifesta]# vi nodes.pp nó 'basenode' { inclui classe base
}
O nó 'puppetclient.leju.com' herda o basenode { tag("test")
}
Nó 'puppetmaster.leju.com' herda o basenode { tag("test")
}
[root@puppetmaster manifesta]# CD .. [root@puppetmaster Puppet]# módulos mkdir Crie um módulo de teste: [módulos root@puppetmaster]# mkdir -p test/manifests/ [root@puppetmaster módulos]# test/arquivos mkdir/ [root@puppetmaster módulos]# teste/arquivos de cd/ [root@puppetmaster arquivos]# vi test.txt Linha de teste! [root@puppetmaster arquivos]# CD .. /manifesta/ Crie uma classe de teste para entregar um arquivo ao cliente: [root@puppetmaster manifesta]# vi init.pp Teste de classe { arquivo { "/tmp/test.txt": Assegure => presente, grupo => "raiz", proprietário => "raiz", modo => "0644", fonte => "puppet:///test/test.txt" }
}
Lançamento do Puppet Master: [root@puppetmaster manifesta]# /etc/init.d/puppetmaster start Certifique-se de que a porta 8140 está ativada.
Instalação do cliente puppet: [root@puppetclient ~]# yum --enablerepo="epel,epel-puppet" instalar puppet
Modifique os hosts e adicione os dois registros a seguir: [root@puppetclient ~]# vi /etc/hosts 192.168.0.10 puppetmaster.leju.com fantoche 192.168.0.100 puppetclient.leju.com
Configurando o fantoche: [root@puppetclient ~]# CD /etc/Puppet/ [root@puppetclient puppet]# vi puppet.conf [principal] # O diretório de registro dos fantoches. # O valor padrão é '$vardir/log'. logdir = /var/log/fantoche
# Onde os arquivos PID da Marionete são guardados. # O valor padrão é '$vardir/run'. rundir = /var/corre/fantoche
# Onde os certificados SSL são guardados. # O valor padrão é '$confdir/ssl'. ssldir = $vardir/ssl
[agente] # O arquivo em que o fantoche armazena uma lista das classes # Associado à configuração recuperada. Pode ser carregado em # o executável separado ''puppet'' usando o ''-loadclasses'' # Opção. # O valor padrão é '$confdir/classes.txt'. classfile = $vardir/classes.txt
# Onde o puppetd armazena em cache a configuração local. Um # extensão indicando o formato do cache é adicionada automaticamente. # O valor padrão é '$confdir/localconfig'. localconfig = $vardir/localconfig
Servidor = puppetmaster.leju.com relatório = verdadeiro ouvir = verdadeiro
[root@puppetclient puppet]# vi namespaceauth.conf [caçador de marionetes] Permita puppetmaster.leju.com permitir *leju.com
[root@puppetclient marionete]# vi auth.conf Adicionar allow * à última linha ...... Caminho / Auth qualquer permitir *
[root@puppetclient Marionete]# CD Executar o fantoche: [root@puppetclient ~]# puppetd --noop --test --trace --debug Se Puppet Master não ativar: autosign=true, ele precisa ser executado em Puppet Master: [root@puppetmaster ~]# certificado de fantoche -l puppetclient.leju.com [root@puppetmaster ~]# Certificado de Marionetes -s puppetclient.leju.com Assine puppetclient.leju.com assim. Depois, volte ao cliente para executar aqui: [root@puppetclient ~]# puppetd --noop --test --trace --debug Join --noop, a configuração não será realmente aplicada no cliente, usada principalmente para testes, para ver se há erros na impressão, e execute sem erros: [root@puppetclient ~]# puppetd --test --trace --debug
Veja o documento: [root@puppetclient ~]# ll /tmp/ Total 8 -rw-r--r-- 1 raiz raiz 11 25 de fevereiro 22:35 test.txt O documento foi emitido.
Também é possível empurrar para Puppet Master: [root@puppetmaster ~]# chute de fantoche -d --apresentador puppetclient.leju.com Desencadeando puppetclient.leju.com Obtendo status Status é sucesso puppetclient.leju.com terminado com o código de saída 0 Finalizado Retornando 0 indica que o 'puppetd' no cliente foi ativado com sucesso.
Configure o fantoche para iniciar automaticamente o inicialização: chkconfig --nível 2345 puppet ligado
Modificar o Mestre dos Fantoches para usar Passageiro Passenger é uma extensão do Apache 2.x para rodar trilhos ou aplicações Rack em Apache. O puppetmaster usa o WEBrick para fornecer serviços de arquivos por padrão; se você tem muitos clientes fantoches, o desempenho do serviço de arquivos do puppetmaster será ruim, para tornar o puppetmaster mais robusto, então use o Apache para fornecer serviços de arquivo.
Instalação: [root@puppetmaster ~]# yum install httpd httpd-devel ruby-devel rubygems O RHEL5 do Passenger 2.2.2 funciona bem. Adicionar repositório foreman.repo: [root@puppetmaster ~]# vi /etc/yum.repos.d/foreman.repo [capataz] name=repositório estável Foreman baseurl=http://yum.theforeman.org/stable gpgcheck=0 ativado=1 [root@puppetmaster ~]# yum instalar rubygem-passenger-2.2.2-1 [root@puppetmaster ~]# Rubigem-Rack-1.0.1-1 [root@puppetmaster ~]# passenger-install-apache2-module
Instalação do módulo SSL do Apache: [root@puppetmaster ~]# Instalação deliciosa mod_ssl
Para configurar a aplicação puppet: mkdir -p /etc/puppet/rack/puppetmasterd/ mkdir /etc/puppet/rack/puppetmasterd/public /etc/puppet/rack/puppetmasterd/tmp cp /usr/share/puppet/ext/rack/files/apache2.conf /etc/httpd/conf.d/puppetmasterd.conf cp /usr/share/puppet/ext/rack/files/config.ru /etc/puppet/rack/puppetmasterd/ chown puppet /etc/puppet/rack/puppetmasterd/config.ru
[root@puppetmaster ~]# vi /etc/httpd/conf.d/passenger.conf LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2/ext/apache2/mod_passenger.so PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.2.2 PassageirRuby /usr/bin/ruby PassengerMaxPoolTamanho 30 PassageiroPoolIdleTime 1500 PassengerMaxRequests 1000 PassageiroTatuaAceleraçãoTaxa 120 RackAutoDetect Desligado TrilhosAutoDetecção Desligada
[root@puppetmaster ~]# vi /etc/httpd/conf.d/puppetmasterd.conf # você provavelmente quer afinar essas configurações PassageiroAltaPerformance ligada PassengerMaxPoolTamanho 12 PassageiroPoolIdleTime 1500 # PassengerMaxRequests 1000 PassageiroTatuaAceleraçãoTaxa 120 RackAutoDetect Desligado TrilhosAutoDetecção Desligada
Ouça 8140
<VirtualHost *:8140> SSLEngine on SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite TODOS:! ADH:RC4+RSA:+ALTO:+MÉDIO:-BAIXO:-SSLv2:-EXP
SSLCertificateFile /var/lib/puppet/ssl/certs/puppetmaster.leju.com.pem SSLCertificateKeyFile /var/lib/puppet/ssl/private_keys/puppetmaster.leju.com.pem SSLCertificateChainFile /var/lib/puppet/ssl/ca/ca_crt.pem SSLCACertificateFile /var/lib/puppet/ssl/ca/ca_crt.pem # Se o Apache reclamar de assinaturas inválidas no CRL, você pode tentar desativar # CRL conferindo comentando a próxima linha, mas isso não é recomendado. SSLCARevocationFile /var/lib/puppet/ssl/ca/ca_crl.pem SSLVerifyClient opcional SSLVerifyDepth 1 SSLOptions +StdEnvVars
# Os seguintes cabeçalhos de cliente permitem que a mesma configuração funcione com Pound. RequestHeader set X-SSL-Subject %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-DN %{SSL_CLIENT_S_DN}e RequestHeader set X-Client-Verify %{SSL_CLIENT_VERIFY}e
DocumentRoot /etc/puppet/rack/puppetmasterd/public/ RackBaseURI / <Diretório /etc/puppet/rack/puppetmasterd/> Nenhuma opção Permitir Sobreposição Nenhuma Ordem permita, nega permitir de todo </Directory> </VirtualHost>
Modifique o arquivo de configuração do puppetmaster para adicionar as seguintes duas linhas: [root@puppetmaster ~]# vi /etc/puppet/puppet.conf [mestre] ssl_client_header = SSL_CLIENT_S_DN ssl_client_verify_header = SSL_CLIENT_VERIFY
Modificar /etc/sysconfig/puppetmaster: [root@puppetmaster ~]# vi /etc/sysconfig/puppetmaster # Adicione a seguinte linha no final: PUPPETMASTER_EXTRA_OPTS="--relatório armazena" Se você precisar reportar tanto ao foreman quanto ao puppet-dashboard, adicione a seguinte linha: PUPPETMASTER_EXTRA_OPTS="--relatórios armazenamento, capataz puppet_dashboard"
Pare o serviço de marionetista e comece o serviço Apache: [root@puppetmaster ~]# /etc/init.d/puppetmaster pare [root@puppetmaster ~]# /etc/init.d/httpd start
Boot não inicia o serviço puppetmaster, boot inicia o serviço httpd: [root@puppetmaster ~]# chkconfig --nível 2345 puppetmaster desligado [root@puppetmaster ~]# chkconfig --level 2345 httpd em
Certifique-se de que a porta 8140 está ativada: [root@puppetmaster ~]# netstat -tunlp |grep 8140 TCP 0 0 :::8140 :::* OUÇA 9834/httpd
Teste no lado do cliente para ver se o log de erro é impresso: [root@puppetclient ~]# puppetd --test --trace --debug |
Anterior:Parâmetros importantes do php-fpm.conf são explicados em detalhesPróximo:No dia 25 de outubro de 2014 (sábado), às 16h, o alarme de defesa aérea e prevenção de desastres foi testado
|