Доступ к марионеточным переменным конфигурации из деклараций?

Если жесткий диск даже распознан компьютером, у меня было большое использование удачи Профессионал EasyRecovery. Я смог восстановить 100% данных по двум из тех ужасная IBM Deskstars, которая возвратила несколько лет к состоянию до сбоя.

У меня когда-то был случай, где я смог использовать прием морозильника, чтобы заставить диск быть распознанным, использовал SpinRite для фиксации данных и Профессионала EasyRecovery для копирования его. Требовалось много времени для восстановления, потому что, после того как диск достиг комнатной температуры, это прекратит показывать до компьютера. Я рассмотрел выполнение его, в то время как в морозильнике, но никогда не получал это отчаянное, так как данные не были высоким приоритетом.

4
задан 27 January 2010 в 18:22
2 ответа

Существует три пути.

  1. У Jeff McCune есть хорошая функция на его GitHub, который делает точно это:
    module Puppet::Parser::Functions
      newfunction(:getconf, :type => :rvalue, :doc => 
    2010-09-29

    The getconf function takes a single argument, the name of a
    configuration setting and returns the value of that setting.

    It is similar to the --configprint command line argument to
    return configuration settings except it exposes this information
    to the language.
    END_HEREDOC
      do |args|
        if args.length != 1 then
          raise Puppet::ParseError, ("ERROR: getconf() takes only one argument")
        end
        Puppet[args[0]]
      end # do |args|
    end # module
    # EOF

Поместите это в файл, названный 'getconf.rb' в libdir Вашего марионеточного сервера (/var/puppet/lib/puppet/parser/functions/getconf.rb) и доступ это из декларации как

# somemanifest.pp
$myvar = getconf("ssldir")
notify {"set ssldir to ${myvar}":}

2. В Марионеточных 2.6 это еще легче, поскольку целая установка настроек доступна как ${settings::somevar}, таким образом, декларация просто:

# 26manifest.pp
$myvar = $settings::ssldir
notify {"set ssldir to $myvar":}

3. В марионеточных 0.25 можно использовать встроенный шаблон:

# 25manifest.pp 
$myvar = inline_template("<%= Puppet.settings[:ssldir] %>")
notify {"set ssldir to ${myvar}":}

Методы 2 и 3 благодаря этому потоку на марионеточных пользователях

7
ответ дан 3 December 2019 в 03:13

не насколько я знаю. что Вы пытаетесь сделать?

-1
ответ дан 3 December 2019 в 03:13
  • 1
    Я делаю много пользовательских плагинов, таким образом, вместо того, чтобы использовать среды я выполняю двух отдельных демонов для Производства и Тестирования. Некоторые мои плагины (включая мой внешний сценарий узлов) должны сослаться на внешние файлы конфигурации, местоположения которых изменяют на основе демона I' m в. I' d нравится мочь установить переменную в моем puppet.conf и затем сослаться на него из моих деклараций вместо того, чтобы иметь необходимость изменить местоположения на каждом получении по запросу/слиянии от тестирования до производства. –  sh-beta 28 January 2010 в 17:22
  • 2
    я вижу теперь. Вы думали о рабочем производстве и тестируете демонов в chroot'ed среде, таким образом, можно использовать те же пути в обеих средах? позволяет говорят/etc/test/puppet и/etc/prod/puppet, и когда Вы запускаете, Вы были бы chroot сначала или к/etc/test или к/etc/prod? точно так же, как связывают, делает? и затем в том ENV пути являются тем же –  rytis 28 January 2010 в 22:42
  • 3
    Это работало бы на этот конкретный пример, но другие вещи как модуль марионеточного клиента, который требует имени puppetmaster и номера порта, все еще проблематичны. –  sh-beta 3 February 2010 в 20:11
  • 4
    Отмечание этого как мой ответ начиная с него doesn' t, кажется, возможны. –  sh-beta 15 March 2010 в 16:24

Теги

Похожие вопросы