Назад | Перейти на главную страницу

Примеры манифестов марионеток для настройки веб-сервера

Просто намочил ноги с марионеткой (пока просто читал), и я надеялся, что есть некоторые образцы (из реальной жизни) манифестов / рецептов, которые настраивают типичный веб-сервер с такими вещами, как apache / mysql / php и т. Д., А также с базовым усилением сервера ( убунту)

К сожалению, на самом деле такого не существует. Использование Puppet похоже на разработку веб-приложений до появления фреймворков. Вы напишете много строительного кода ... ну, по крайней мере, до сих пор таков мой опыт. В Кузница Марионеточного Модуля очень удачный или промах, и я был довольно не впечатлен большинством модулей там.

Я бы порекомендовал посмотреть Example42's попытки создать целостную систему. Я использовал несколько его модулей для начальной загрузки моей последней установки Puppet. Вам нужно будет немного изменить его код, потому что он основан на RHEL / CentOS, однако он использует класс params, который упрощает поддержку других дистрибутивов.

С марионеткой лучше всего помнить о том, чтобы попытаться создать модули для всего вашего манифеста, чтобы код можно было легко повторно использовать для нескольких серверов и сред.

Также используйте SVN или GIT, чтобы вы могли легко отслеживать изменения и проверять файлы конфигурации, необходимые для данного приложения. Как сказал Кашани, оба Марионеточная кузница и Пример42 могут быть хорошие ссылки.

Ниже приведен образец манифеста, который я создал для веб-серверов. Это даст вам возможность при необходимости установить / удалить веб-сервер. Вы заметите, что он использует фактические данные для проверки как ОС, так и архитектуры для установки правильной RPMS (Centos). Хотя вы можете легко использовать это как шаблон и расширить до Ubuntu с правильными именами пакетов.

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",
        }
      }
    }  
  }
}

Чтобы добавить дополнительные функции к базовому манифесту, вы просто вызываете его из другого манифеста. Такие как установка SSL и http сервера. В приведенном ниже коде вы увидите, что --include apache - используется для вызова приведенного выше манифеста, а затем также устанавливает дополнительные параметры.

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'],
          }
        }
      }
    }
  }
}

У вас может быть что-то подобное. Точное имя пакета зависит от используемой вами операционной системы. Поместите следующее в /etc/puppet/modules/webserver/manifests/init.pp:

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

Затем в вашем файле /etc/puppet/site/nodes.pp поместите:

node default {
    include webserver;
}