Использование факта фактора в факте для выполнения команды

Я пытаюсь написать собственный модуль facter, который включает в себя факт в факте для команды через конкатенацию командной строки плюс переменную факта facter:

Facter.add("customfact") do
  setcode do
    $string_to_parse = Facter::Util::Resolution.exec('somecommand' + $::fact)
  end
end

Новичок в ruby ​​и Puppet... 1. Каков будет правильный синтаксис, чтобы что-то с этим сделать?

  1. Есть ли способ разбить вывод в массив фактов или как правильно искать в $string_to_parse содержимое, которое мне нужно.

Вот пример вывода, сгенерированного командой:

TAG     security-group  sg-0a7a8a61     aws:cloudformation:stack-name   awseb-e-5tzgj9fq5b-stack

Мне нужна группа безопасности и имя стека.

1 ответ

Решение

Вы хотите использовать Facter.value(:sourcefact) внутри вашего нового факта для доступа к переменной. Что касается получения отдельных ценностей, вы, вероятно, хотите, чтобы они были отдельными фактами, но вы могли бы 'somecommand' + Facter.value(:sourcefact) + ' | awk {"print $3"}' даст вам группу безопасности (в качестве примера).

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