Hiera puppet による nginx サイトの有効化と無効化を管理しますか?

Hiera puppet による nginx サイトの有効化と無効化を管理しますか?

nginx の sites_enabled を管理するための hiera puppet スクリプトを実装するタスクを取得しました。

これが私の人形のスクリプトです:

共通.yaml

---
classes:
    - nginx

nginx:
    enabled:
        abc.com
        xyz.com
    disabled:
        test.com
        test2.com

初期化

class nginx{
    create_resources("site_enabled", hiera("nginx"), {})
}

define site_enabled($name){
    file { '/etc/nginx/sites_enabled/${name}':
       ensure => 'link',
       target => '/etc/nginx/site_available/${name}',
    }
}

しかし、Puppet を実行するとエラーが発生しました:

エラー: リモート サーバーからカタログを取得できませんでした: サーバーでエラー 400: ノード XX の /etc/puppet/modules/nginx/manifests/init.pp:7 で文字列を整数に変換できません

コマンドライン経由でhieraをクエリしようとしたとき:

$ ヒエラ nginx

{"有効"=>["abc.com", "xyz.com"]}

どこか間違っていることはわかっています。どうか訂正してください。配列データを使用して Hiera クエリと処理を実行する方法があまり理解できません。可能であれば、役立つドキュメントを教えてください。

本当にありがとう。

答え1

あなたの質問は、create_resources の Hiera ハッシュの作成中に問題が発生しました、答えはあります。ここで要約します。

によるcreate_resources のドキュメント、ハッシュは の形式である必要があります{title => {parameters} }。パラメータを設定するには、hiera データを編集する必要があります。パラメータがないので、次のようになると思います。

共通.yaml

---
classes:
    - nginx

nginx::enabled:
    abc.com: {}
    xyz.com: {}
nginx::disabled:
    test.com: {}
    test2.com: {}

次に、hieraから適切なデータを実際にロードする必要があります。ロードしたいのはnginx::enabled、すべてではなく、nginx

初期化

class nginx{
    create_resources("site_enabled", hiera("nginx::enabled"))
}

define site_enabled($name){
    file { '/etc/nginx/sites_enabled/${name}':
       ensure => 'link',
       target => '/etc/nginx/site_available/${name}',
    }
}

答え2

Sciunusさん、素早い対応ありがとうございます。

この質問をしてもよろしいでしょうか? 次のような形式に従って yaml データを作成したいと思います:

nginx:

enabled:
    abc.com
    xyz.com
disabled:
    test.com
    test2.com

私はそのようなフォーマットを作りたくありません:

nginx::有効:

abc.com: {}
xyz.com: {} 

nginx::無効:

test.com: {}
test2.com: {}

私の Puppet スクリプトを期待どおりに動作させるにはどうしたらよいでしょうか。Hiera ドキュメントも読みましたが、hiera、hiera_hash、hiera_array の 3 種類のルックアップ データもサポートされていることがわかりました。しかし、上記の yaml ファイル形式に従って期待どおりに動作させることができませんでした。

申し訳ありませんが、私は Hiera に関しては初心者です。

よろしくお願いします。

関連情報