#file #puppet
#файл #кукольный
Вопрос:
Я поместил некоторые значения в файл. В кукольных манифестах я хочу получить значение этих переменных. Есть ли конкретный каталог для размещения моего файла? Кроме того, каким должен быть формат файла?
Комментарии:
1. Вероятно, вы пытаетесь сделать то, что уже делает hiera? См . docs.puppetlabs.com/hiera/1 за подробностями.
2. Я хочу, чтобы манифесты брали имя узла из файлов. Как это можно сделать?
3. Кроме того, локальные переменные области видимости не должны использоваться в hiera. Я хочу определить локальные переменные области видимости из файла.
4. Имя узла из файлов: это, по сути, ENC, см. docs.puppetlabs.com/guides/external_nodes.html . — «локальные переменные области видимости не должны использоваться в hiera», я не уверен, что вы имеете в виду, но я считаю, что вы ошиблись. Локальные переменные могут и должны быть заполнены из данных, хранящихся в Hiera.
Ответ №1:
Если этот файл находится на puppet-сервере, вы можете написать функции для модуля. Например:
modules/my_module/lib/puppet/parser/functions/get_var.rb:
$: << File.expand_path(File.join(File.dirname(__FILE__), '.'))
module Puppet::Parser::Functions
newfunction(:get_var,
:type => :rvalue) do |args|
file_name = args[0]
f = File.open(file_name)
s = f.readline()
return s
end
end
И использовать его в манифестах : $test = get_var('/etc/puppet/configs.txt')
. Эта функция возвращает первую строку из файла, но вы можете изменить ее для своих нужд.
Для файла на клиенте вы можете написать facter .
Комментарии:
1. Если мне нужно сохранить эти значения в файле, например, в текстовом файле или XML-файле, то как я могу извлечь его в манифесты?
2. это зависит от формата. вы можете проанализировать любой файл с любым форматом и вернуть одно значение или хэш значений. Это требует некоторых навыков работы с ruby, но ruby — очень простой язык. Проще, чем английский 🙂