Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 8686|Resposta: 0

Gerenciamento de Configuração: Instalação e Uso de Marionetes (1)

[Copiar link]
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 detalhes
Pró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
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com