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が配列データをどのようにクエリして処理するかについてはよくわかりません。可能であれば、役立つドキュメントを教えてください。
本当にありがとう。
あなたの質問は 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}',
}
}
迅速な対応をしてくれた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ファイル形式に従って期待どおりに機能させることができませんでした
ヒエラはとても新しいのでごめんなさい。
よろしくお願いします。