Amostra de manifestos de fantoches para configurar um servidor da web

4

Apenas enchendo os pés com marionetes (apenas lendo até agora), e esperava que houvesse alguns exemplos / receitas reais (da vida real) que configurassem um servidor web típico com coisas como apache / mysql / php etc. endurecimento do servidor (Ubuntu)

    
por Blankman 11.02.2011 / 21:16

3 respostas

4

Com o fantoche, a melhor coisa a lembrar é tentar criar módulos para todo o seu manifesto, para que o código seja facilmente reutilizado para vários servidores e ambientes.

Use também o SVN ou o GIT para controlar facilmente as alterações e os arquivos de configuração de checkout necessários para um determinado aplicativo. Como kashani declarou Puppet Forge e Example42 pode ser algumas boas referências.

Abaixo está um exemplo de manifesto que criei para servidores da web. Isso lhe dará a opção de instalar / desinstalar um servidor da Web, se necessário. Você notará que ele usa os fatos do fac-símile para verificar o sistema operacional e a arquitetura para instalar o RPMS correto (Centos). Embora você possa facilmente levar isso como um modelo e expandir para o Ubuntu com os nomes de pacotes corretos.

class apache ($disable = "false", $apacheconf = "default") {
  if $disable == "false" {
    $installed = present
    $enable = true
    $ensure = "running"
  } else {
    $installed = absent
    $enable = false
    $ensure = "stopped"
  }
  case $operatingsystem {
    'CentOS', 'RedHat': {
      if $architecture == "x86_64" {
        package { 'httpd':
          name   => "httpd.x86_64",
          ensure => $installed,
        }
      } else {
        package { 'httpd':
          name   => "httpd.i386",
          ensure => $installed,
        }
      }
      service { 'httpd':
        ensure => $ensure,
        enable => $enable,
      }
      file { "http.conf":
        path   => "/etc/httpd/conf/httpd.conf",
        owner  => root,
        group  => root,
        mode   => 0644,
        source => $apacheconf ? {
          'default' => "puppet:///modules/apache/httpd.conf",
        }
      }
    }  
  }
}

Para adicionar funcionalidades adicionais ao manifesto básico, basta chamá-lo de outro manifesto. Como instalar e servidor http SSL. O código abaixo, você verá que --include apache-- é usado para chamar o manifesto acima e também instalar opções adicionais.

class apache::ssl ($disable = "false") {
  include apache

  if $disable == "false" {
    $installed = present
    $enable = true
    $ensure = "running"
  } else {
    $installed = absent
    $enable = false
    $ensure = "stopped"
  }

  case $operatingsystem {
    'CentOS', 'RedHat': {
      case $architecture {
        'x86_64': {
          package { 'mod_ssl':
            name   => "mod_ssl.x86_64",
            ensure => $installed,
            require => Package['httpd'],
          }
       }
        'i386':{
          package { 'mod_ssl':
            name   => "mod_ssl.i386",
            ensure => $installed,
            require => Package['httpd'],
          }
        }
      }
    }
  }
}
    
por 22.02.2011 / 17:25
4

Infelizmente, tal coisa realmente não existe. Usar o Puppet é como desenvolver aplicativos da web antes de existirem frameworks. Você vai escrever um monte de código de andaimes .. bem, pelo menos, tem sido a minha experiência até agora. O Módulo Puppet Forge é um sucesso ou um fracasso e eu não me impressiono com a maioria dos módulos.

Eu recomendaria que o Example42 tente criar um sistema coerente. Eu usei vários de seus módulos para fazer o bootstrap da minha última instalação do Puppet. Você precisará modificar um pouco do seu código porque ele é baseado no RHEL / CentOS, mas ele usa uma classe params que torna o suporte a outras distros muito simples. p>     

por 11.02.2011 / 23:08
2

Você pode ter algo assim. O nome exato do pacote depende do sistema operacional que você está usando. Coloque o seguinte em /etc/puppet/modules/webserver/manifests/init.pp:

class webserver {
    package { apache2: ensure => installed; }
    package { php5: ensure => installed; } 
    package { mysql-server ensure => installed; }
}

Em seguida, no seu arquivo /etc/puppet/site/nodes.pp coloque:

node default {
    include webserver;
}
    
por 12.02.2011 / 03:09