web-dev-qa-db-ja.com

管理の有効化-Hierapuppetによってnginxサイトを無効にしますか?

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

これが私のパペットスクリプトです:

common.yaml

---
classes:
    - nginx

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

init.pp

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}',
    }
}

しかし、パペットが実行されたときにエラーが発生しました:

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

コマンドラインからhieraをクエリしようとしたとき:

$ hiera nginx

{"enabled" => ["abc.com"、 "xyz.com"]}

私はどこかが間違っていることを知っています。訂正してください。 hieraが配列データをどのようにクエリして処理するかについてはよくわかりません。可能であれば、役立つドキュメントを教えてください。

本当にありがとう。

3
Calvin Pham

あなたの質問は create_resourcesのHieraハッシュの作成に関する問題 と非常によく似ています。ここで要約します。

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

common.yaml

---
classes:
    - nginx

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

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

init.pp

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}',
    }
}
3
sciurus

迅速な対応をしてくれたSciunusに感謝します。

この質問をしてもいいですか。この種の形式に従ってyamlデータを作成したいと思います。

nginx:

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

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

nginx :: enabled:

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

nginx :: disabled:

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

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

ヒエラはとても新しいのでごめんなさい。

よろしくお願いします。

0
Calvin Pham