Есть ли способ для марионетки передать все пары ключ-значение скрипту в качестве аргумента через exec
?
В общем, нет, потому что разрешения Hiera могут быть контекстно-зависимыми. Нет никакой гарантии, что «все пары ключ-значение» четко определены для всего узла. Поэтому, прежде чем даже говорить о том, как можно обмениваться данными, вам нужно разобраться с проблемой того, что эти данные являются.
Даже если вы предполагаете, что не используется ни одно из средств Hiera, которые контекстуализируют данные более узко, чем на основе узла за узлом, и что вам нужно заниматься только приоритетным поиском (а не поиском в массиве или слиянием хэшей), Hiera не имеет встроенного средства для компиляции всех данных, относящихся к узлу. Однако, если вы имеете дело только со стандартным бэкэндом YAML или JSON, вы, вероятно, могли бы создать и использовать свою собственную взломанную версию, которая извлекает нужные данные, возможно, как значение какого-то специального ключа.
Однако даже в этом случае передача самих данных в качестве аргумента командной строки весьма сомнительна. Во-первых, вам потребуется сериализовать данные в форму, которая будет интерпретироваться как одно слово оболочки. Это, безусловно, можно автоматизировать, но в дальнейшем вы рискуете нарушать ограничения на длину аргумента. Соответствующая POSIX система может установить максимальную длину аргумента всего 4096 байт (хотя многие имеют гораздо большие ограничения), и это может быть слишком мало. И если вы пытаетесь сделать это с Windows, то знайте, что ее ограничения еще меньше.
В качестве альтернативы передаче данных в качестве аргумента командной строки вы можете записать их в файл, который будет читать ваш скрипт(ы). Однако даже это кажется немного глупым. У Hiera есть интерфейс командной строки — почему бы просто не распространять данные Hiera и конфигурацию иерархии, а ваши сценарии используют Hiera для запроса необходимых данных из него?
person
John Bollinger
schedule
03.11.2016