Получить переменную из yaml в манифесте марионетки - PullRequest
1 голос
/ 12 марта 2019

Я делаю один проект для кукол, но в настоящее время застрял в одной логике.

Таким образом, вы хотите узнать, можем ли мы получить переменную из .yaml, .json или обычного текстового файла в файле манифеста кукол.

Например, мой манифест марионетки хочет создать пользователя, но переменная существует в .yaml или любом файле конфигурации, поэтому необходимо извлечь переменную из внешнего файла.Манифест Puppet также может выполнять зацикливание, если в файле .yaml существует несколько пользователей.

Я читал о hiera, но, допустим, мы не используем hiera, есть ли какой-либо возможный способ.

1 Ответ

3 голосов
/ 12 марта 2019

Есть несколько способов сделать это, используя комбинацию встроенных функций и stdlib , по крайней мере, для YAML и JSON.

Создайте файл в mymodule / files / myfile.yaml:

▶ cat files/myfile.yaml 
---
foo: bar

Затем в ваших манифестах прочитайте его в строку и проанализируйте:

$myhash = parseyaml(file('mymodule/myfile.yaml'))
notice($myhash)

Это выдаст:

Notice: Scope(Class[mymodule]): {foo => bar}
  • Или, используя loadyaml или loadjsonФункции stdlib:
$myhash = loadyaml('/etc/puppet/data/myfile.yaml')
notice($myhash)

Проблема этого подхода заключается в том, что вам нужно знать путь к файлу на мастере Puppet.Или вы можете использовать функцию Puppet 6 deferred и считывать данные из файла на узле агента.

(Независимо от того, вы должны сделать это другоене имеет значения - подсказка: ответ - вы наверняка должны использовать Hiera, но это не тот вопрос, который вы задали.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...