Как получить доступ к имени среды в Puppetfile

Я использую R10K с Puppet. Puppetfile в основном DSL:

Поскольку формат Puppetfile фактически реализован с использованием Ruby DSL, можно использовать любое допустимое выражение Ruby.

Ссылка: https://github.com/puppetlabs/r10k/blob/master/doc/puppetfile.mkd

Исходя из этого, я могу написать некоторый код Ruby в Puppetfile, Я пытался, и это работает. Но я не нахожу и не знаю, как получить доступ к некоторым переменным.

В конечном итоге я пытаюсь сделать что-то вроде этого:

mod 'app',
  :git    => 'https://github.com/apps/app.git',
  :branch => ${environment}

Таким образом, ветвь модуля, которая извлечена, является такой же, как среда, для которой она извлечена. Obviouslt ${environment} не правильный синтаксис и не настоящее имя переменной.

Таким образом, лучший ответ на этот вопрос будет, как получить переменную среды, а второй лучший ответ будет, как ссылаться на переменную (и какие переменные доступны) в Puppetfile,

1 ответ

Решение

Конечно, через 10 минут после того, как я задал вопрос, я разобрался с ответом (пытался решить это часами)...

в Puppetfile у вас есть доступ к переменным DSL класс (см. класс DLS в GitHub. Таким образом, у вас есть доступ к @librarian который является примером Puppetfile класс (см. puppetfile.rb). И оттуда у вас есть доступ к его атрибутам.

Таким образом, ответ на получение ответвления имени текущей среды:

mod 'app',
  :git    => 'https://github.com/apps/app.git',
  :branch => @librarian.basedir.split('/').last

Не элегантно и я желаю puppetfile.rb дал бы нам прямой доступ к окружающей среде, но это работает для меня.

Другие вопросы по тегам