
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 に関しては初心者です。
よろしくお願いします。