Как получить доступ к имени среды в 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
дал бы нам прямой доступ к окружающей среде, но это работает для меня.