私の足を操り人形で濡らすだけ(これまで読んでいるところです)で、Apache/mysql/phpなどの典型的なWebサーバーをセットアップするサンプル(実際の)マニフェスト/レシピと基本的なサーバー強化( ubuntu)
パペットについて覚えておくべき最良のことは、すべてのマニフェストのモジュールを作成して、コードを複数のサーバーや環境で簡単に再利用できるようにすることです。
また、この方法でSVNまたはGITを使用して、特定のアプリケーションに必要な変更を追跡したり、構成ファイルをチェックアウトしたりすることができます。 kashaniが述べたように、 Puppet Forge と Example42 の両方がいくつかの優れたリファレンスになる可能性があります。
以下は、私がWebサーバー用に作成したサンプルマニフェストです。これにより、必要に応じてWebサーバーをインストール/アンインストールするオプションが提供されます。 OSとアーキテクチャの両方をチェックするために、ファクターファクトを使用して正しい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'],
}
}
}
}
}
}
残念ながらそのようなことは実際には存在しません。 Puppetの使用は、フレームワークが存在する前にWebアプリを開発するようなものです。あなたはたくさんの足場コードを書くでしょう…まあ、少なくともそれは今のところ私の経験です。 Puppet Module Forge は非常にヒットしたりミスしたりしており、そこにあるほとんどのモジュールにはかなり感銘を受けていません。
Example42's コヒーレントなシステムを作成する試みを見てみることをお勧めします。 bootstrap私の最新のPuppetのインストールにいくつかのモジュールを使用しました。RHEL/ CentOSに基づいているため、彼のコードのかなりの部分を変更する必要がありますが、彼はparamsクラスを使用しています。他のディストリビューションのサポートをかなり簡単にします。
あなたはこのようなものを持つことができます。正確なパッケージ名は、使用しているオペレーティングシステムによって異なります。以下を/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;
}