Просто намочил ноги с марионеткой (пока просто читал), и я надеялся, что есть некоторые образцы (из реальной жизни) манифестов / рецептов, которые настраивают типичный веб-сервер с такими вещами, как 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;
}