web-dev-qa-db-ja.com

Webサーバーを設定するためのサンプルPuppetマニフェスト

私の足を操り人形で濡らすだけ(これまで読んでいるところです)で、Apache/mysql/phpなどの典型的なWebサーバーをセットアップするサンプル(実際の)マニフェスト/レシピと基本的なサーバー強化( ubuntu)

4
Blankman

パペットについて覚えておくべき最良のことは、すべてのマニフェストのモジュールを作成して、コードを複数のサーバーや環境で簡単に再利用できるようにすることです。

また、この方法でSVNまたはGITを使用して、特定のアプリケーションに必要な変更を追跡したり、構成ファイルをチェックアウトしたりすることができます。 kashaniが述べたように、 Puppet ForgeExample42 の両方がいくつかの優れたリファレンスになる可能性があります。

以下は、私が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'],
          }
        }
      }
    }
  }
}
4
st3v3o

残念ながらそのようなことは実際には存在しません。 Puppetの使用は、フレームワークが存在する前にWebアプリを開発するようなものです。あなたはたくさんの足場コードを書くでしょう…まあ、少なくともそれは今のところ私の経験です。 Puppet Module Forge は非常にヒットしたりミスしたりしており、そこにあるほとんどのモジュールにはかなり感銘を受けていません。

Example42's コヒーレントなシステムを作成する試みを見てみることをお勧めします。 bootstrap私の最新のPuppetのインストールにいくつかのモジュールを使用しました。RHEL/ CentOSに基づいているため、彼のコードのかなりの部分を変更する必要がありますが、彼はparamsクラスを使用しています。他のディストリビューションのサポートをかなり簡単にします。

4
kashani

あなたはこのようなものを持つことができます。正確なパッケージ名は、使用しているオペレーティングシステムによって異なります。以下を/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;
}
2
Avleen