Puppet-ハッシュを反復処理します

SimonH

puppet 3.8を使用しています(残念ながら、まだpuppet 4に移行できません)

hieraに次のようなハッシュがあります。

hash_data:
  item1:
    field1:   'some data'
    array_data:
      - data1
      - data2
  item2:
    field1:   'other data'
    array_data:
      - data3
      - data4

次のようなコードでモジュールをまとめました。

class processor {
    $data = hiera_hash('hash_data', {})

    create_resources(processor::hash_entry, $data)
}

define processor::hash_entry ($field1, $array_data) {
#    .. do_something ..

# process array items
    processor::process_array { $array_data : 
        datavar = 'somevalue'
    }
}

define processor::process_array($element, $datavar) {
    # do something
}

これは、ハッシュ内のarray_dataフィールドにすべて一意のフィールドが含まれている限り、正常に機能します。ただし、一意でないデータを次のように配置する必要がある場合:

hash_data:
  item1:
    field1:   'some data'
    array_data:
      - data1
      - data2
  item2:
    field1:   'other data'
    array_data:
      - data3
      - data2                  ( **non-unique value **)

次に、重複するリソースをヒットします。誰かがそのハッシュを処理する方法を提案できますか?

ありがとう

ドミニククレア

問題はここから始まります。ここでprocessor::process_arrayは、名前として一意でないデータが指定されています。

define processor::hash_entry ($field1, $array_data) {
    processor::process_array { ${array_data}:
        # ...

ときにprocessor::hash_entry、重複/同じで2回呼び出されarray_data、これが生成します。

Processor::Process_array[data1]
Processor::Process_array[data2]
Processor::Process_array[data3]
Processor::Process_array[data2]

私が推測するのは、あなたが報告する重複したリソースです。

これに一意のデータ、つまりprocessor::hash_entryリソースの「item1」/「item2」名(または適切な場合はfield1)をプレフィックスとして付けると、それらは一意になります。

stdlib prefix()関数を使用して、すべてのdata *エントリの前にhash_entry名を付けます。

define processor::hash_entry ($field1, $array_data) {
    $prefixed_array_data = prefix($array_data, "${title}-")
    processor::process_array { ${prefixed_array_data}:
        # ...

これにより、以下が生成されます。

Processor::Process_array[item1-data1]
Processor::Process_array[item1-data2]
Processor::Process_array[item2-data3]
Processor::Process_array[item2-data2]

プレフィックスなしでdata2内部にアクセスする必要があるprocess_array場合は、いつでもを分割$titleてデータを元に戻すことができます。

define processor::process_array($element, $datavar) {
    $split_title = split($title, '-')
    $data = $split_title[1]
    # do something
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Puppetのハッシュキー/値を反復処理します

分類Dev

puppetマニフェストの深くネストされたhieraハッシュを反復処理します

分類Dev

puppetマニフェストのネストされたハッシュを反復処理するときのPuppet-lint警告

分類Dev

puppet 3.8のハッシュの配列を反復処理するにはどうすればよいですか?

分類Dev

Puppet-ハッシュを反復処理するときにhieraに存在しない場合、マニフェストにデフォルトを設定します

分類Dev

PuppetのHieraハッシュをTDD

分類Dev

Puppet-クラス引数としてハッシュを渡します

分類Dev

gemクエリ出力を反復処理してネストされたPuppetファクト(Ruby)を作成する

分類Dev

Canotはハッシュマップを反復処理します

分類Dev

Canotはハッシュマップを反復処理します

分類Dev

Perlでハッシュと配列を反復処理します

分類Dev

ハッシュテーブルを反復処理しますか?

分類Dev

Perl-配列値のハッシュを反復処理します

分類Dev

erbsudoersは配列のハッシュを反復処理します

分類Dev

関数から配列のハッシュを反復処理します

分類Dev

Puppet-ハッシュタイトルから配列を構築して、execの内容を確認します

分類Dev

puppetは、キーに基づいて配列をハッシュに変換します

分類Dev

ハッシュマップを反復処理し、使用する変数に値を格納します

分類Dev

ruby-キーと配列の値のペアを含むハッシュを反復処理し、各値を反復処理します

分類Dev

ハッシュを反復処理して、配列に一致する値を取得します

分類Dev

辞書(ハッシュテーブル)を反復処理し、構造体にパックします

分類Dev

ハッシュ内のハッシュの配列を反復処理する

分類Dev

ネストされたハッシュを反復処理し、その場で値を変更します

分類Dev

ハッシュマップとオブジェクトを反復処理します

分類Dev

Scalaハッシュマップで指定されたキーの値を反復処理します

分類Dev

ハッシュを反復処理すると、ハッシュが出力されますか?

分類Dev

ハッシュを反復処理すると、ハッシュが出力されますか?

分類Dev

Ruby-ハッシュ名なしで解析されたjsonを反復処理します

分類Dev

Perlで配列のハッシュの配列を反復処理しますか?

Related 関連記事

  1. 1

    Puppetのハッシュキー/値を反復処理します

  2. 2

    puppetマニフェストの深くネストされたhieraハッシュを反復処理します

  3. 3

    puppetマニフェストのネストされたハッシュを反復処理するときのPuppet-lint警告

  4. 4

    puppet 3.8のハッシュの配列を反復処理するにはどうすればよいですか?

  5. 5

    Puppet-ハッシュを反復処理するときにhieraに存在しない場合、マニフェストにデフォルトを設定します

  6. 6

    PuppetのHieraハッシュをTDD

  7. 7

    Puppet-クラス引数としてハッシュを渡します

  8. 8

    gemクエリ出力を反復処理してネストされたPuppetファクト(Ruby)を作成する

  9. 9

    Canotはハッシュマップを反復処理します

  10. 10

    Canotはハッシュマップを反復処理します

  11. 11

    Perlでハッシュと配列を反復処理します

  12. 12

    ハッシュテーブルを反復処理しますか?

  13. 13

    Perl-配列値のハッシュを反復処理します

  14. 14

    erbsudoersは配列のハッシュを反復処理します

  15. 15

    関数から配列のハッシュを反復処理します

  16. 16

    Puppet-ハッシュタイトルから配列を構築して、execの内容を確認します

  17. 17

    puppetは、キーに基づいて配列をハッシュに変換します

  18. 18

    ハッシュマップを反復処理し、使用する変数に値を格納します

  19. 19

    ruby-キーと配列の値のペアを含むハッシュを反復処理し、各値を反復処理します

  20. 20

    ハッシュを反復処理して、配列に一致する値を取得します

  21. 21

    辞書(ハッシュテーブル)を反復処理し、構造体にパックします

  22. 22

    ハッシュ内のハッシュの配列を反復処理する

  23. 23

    ネストされたハッシュを反復処理し、その場で値を変更します

  24. 24

    ハッシュマップとオブジェクトを反復処理します

  25. 25

    Scalaハッシュマップで指定されたキーの値を反復処理します

  26. 26

    ハッシュを反復処理すると、ハッシュが出力されますか?

  27. 27

    ハッシュを反復処理すると、ハッシュが出力されますか?

  28. 28

    Ruby-ハッシュ名なしで解析されたjsonを反復処理します

  29. 29

    Perlで配列のハッシュの配列を反復処理しますか?

ホットタグ

アーカイブ