Я использую 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}
Таким образом, чтобы извлеченная ветвь модуля была такой же, как и среда, для которой она извлечена. Очевидно ${environment}
неправильный синтаксис и не настоящее имя переменной.
Таким образом, лучший ответ на этот вопрос - как получить переменную среды, а второй лучший ответ - как ссылаться на переменную (и какие переменные доступны) в Puppetfile
.
Конечно, через 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
даст нам прямой доступ к окружающей среде, но это работает для меня.