Go to main content
Oracle® Solaris 11.3 での Puppet を使用した構成管理の実行

印刷ビューの終了

更新: 2016 年 7 月
 
 

Puppet クラスの記述

クラスは、再利用を可能にする Puppet コードのブロックです。クラスを使用すると、マニフェストを読むときの複雑さが軽減されます。クラス定義には、特定のクラスのためのコードが含まれています。最初にクラスを定義してから、そのクラスをマニフェスト内で使用できるようにします。クラス自体は何も評価を実行しません。

次の例は、examplecloud という名前のクラス定義に使用される形式を示しています。

class examplecloud::analytics {

    package { "system/management/webui/webui-server":
        ensure => installed,
    }

    svccfg { "webui":
        require => Package["system/management/webui/webui-server"],
        fmri => "system/webui/server:default",
        property => "conf/redirect_from_https",
        value => "false",
        ensure => present,
    }

    service { "system/webui/server":
        require => Package["system/management/webui/webui-server"],
        ensure => running,
    }

}

この例では、クラスに examplecloudanalytics という 2 つの名前空間があります。このクラスで指定されているコードによって、ノード上で analytics SMF サービスを有効にする前に特定の IPS パッケージがインストールされ、特定の SMF 構成が適用されることが保証されます。

クラス宣言は、マニフェスト内で定義されているクラスです。クラス宣言は、Puppet にそのクラス内のコードを評価するよう指示します。

    クラス宣言には、通常とリソースライクの 2 つのタイプがあります。

  • 通常のクラス宣言の場合は、次の例に示すように include キーワードが Puppet コードに含まれています。

    include example_class
  • リソースライクのクラス宣言の場合は、次の例に示すように、リソースが宣言される方法と同様にクラスが宣言されます。

    class { 'example_class': }

    クラスパラメータを指定するには、リソースライクのクラス宣言を使用します。これらのパラメータは、クラス属性のデフォルト値をオーバーライドします。

Puppet クラスの記述および割り当ての詳細は、https://docs.puppetlabs.com/puppet/3.8/reference/lang_classes.html を参照してください。

使用例 3  Puppet マニフェストへのクラス宣言の追加

次のマニフェストの例では、Puppet マスター上の /puppet/modules ディレクトリ内にある exampleloud という名前のクラス宣言を使用します。

examplecloud クラスの下に、さまざまな構成を指定するマニフェスト (/puppet/modules/examplecloud/manifests) がいくつか存在します。次の例に示すように、各マニフェストには examplecloud クラス宣言が含まれています。

# NTP configuration for companyfoo
class examplecloud::ntp {

    file { "ntp.conf" :
        path => "/etc/inet/ntp.conf",
        owner => "root",
        group => "root",
        mode => 644,
        source => "puppet:///modules/examplecloud/ntp.conf",
    }

    package { "ntp":
        ensure => installed,
    }

    service { "ntp":
        require => File["ntp.conf"],
        subscribe => File["ntp.conf"],
        ensure => running,
    }

}

    前の例にある examplecloud クラスの宣言では、次のことが保証されます。

  • NTP パッケージがインストールされる

  • 特定の構成ファイル (これは Puppet マスター以外の場所がソースになっています) がインストールされる

  • NTP サービスが有効になり、ノード上で実行状態になる