1

Puppet クラスで Varnish をデプロイするには、Varnish を停止してファイルを移動およびデプロイし、最後に Varnish が開始されていることを確認する必要があります。

私の問題は単純です。異なるステップでサービスを停止または開始するために、Puppet クラスでサービスを 2 回定義するにはどうすればよいですか?

class varnish::install (

    (...)

    service { "varnish":
        ensure => "stopped",
        require => Package['varnish'],
        before => Exec['mv-lib-varnish'],
    }

    (...)

    service { "varnish":
        ensure => "running",
        require => File["$varnishncsa_file"],
    }
}

私はDuplicate definition: Service[varnish] (...)エラーがあり、それは論理的です...

Puppet クラスでサービスを管理するためのベスト プラクティスは何ですか? 複数のクラスに分割するか、サービスを「名前変更」して複数回宣言するオプションがありますか?

4

2 に答える 2

3

重複エラーを取り除くために次のことを試してください。しかし、あなたがやろうとしていることは間違っています。Puppet はシステムを特定の一貫した状態にします - サービス X を停止し、何らかの作業を行い、サービス X を開始します - これは puppet の適切な使用の範囲外であり、サービスが依存するいくつかのファイルが変更された場合、puppet はサービスの再起動に似ています。

class varnish::install (

(...)

service { "varnish-stop":
    name => "varnish"
    ensure => "stopped",
    require => Package['varnish'],
    before => Exec['mv-lib-varnish'],
}

(...)

service { "varnish-start":
    name => "varnish"
    ensure => "running",
    require => File["$varnishncsa_file"],
}
}
于 2012-06-19T18:27:05.417 に答える
1

「ファイルのデプロイ」アクション (パッケージ/別の exec) のフック (通知) として、サービスの再起動で exec を使用します。サービス自体を実行中として定義するのは 1 回だけです。パペットは、ターゲットの状態を記述するためのものです。

于 2016-07-18T09:10:51.903 に答える