Проблема с синтаксическим анализом Ruby Mixlib :: ShellOut в chef
Я пытаюсь расширить существующую кулинарную книгу, в которой мы используем Mixlib::ShellOut для сбора значительного количества информации об установке Oracle. В основном это просто работает.
Я пытаюсь добавить атрибут узла для того, где работает TFA, потому что он может варьироваться в зависимости от версии. С самого сервера простойps -ef | grep tfa | grep java | awk '{print $NF}'
дает мне именно то, что мне нужно.
Когда я добавляю это в рецепт как
tfa_home = ::Mixlib::ShellOut.new("ps -ef | grep tfa | grep java | awk '{print $NF}'")
tfa_home.run_command
node.normal['gbucs_oracledb']['orahome']['tfa_home'] = tfa_home.stdout.strip
Результирующий вывод json, кажется, получает символ новой строки, а также строку "$NF'":
"tfa_home": "/u01/app/19.0.0.0/grid/tfa/<hostname>/tfa_home\n$NF}'"
Я пробовал несколько вариантов выхода из $NF, но пока безуспешно. Есть очевидное решение?
1 ответ
Решение
А что насчет String.gsub?
tfa_home.stdout.strip.gsub(/\n\$NF}'/, '')