В Chef, как отловить вывод команды выполнения ресурса в переменной?
Я хочу использовать частный IP-адрес позже в моем рецепте шеф-повара, чтобы узнать, как его перехватить в переменной. Мой код выглядит как...
execute 'privateip' do
command 'curl http://169.254.169.254/latest/meta-data/local-ipv4'
action :run
end
Я хочу поймать вывод команды curl в переменную что-то вроде..
privip = 'curl http://169.254.169.254/latest/meta-data/local-ipv4'
а затем использовать это значение в файле конфигурации ИЛИ есть ли способ получить частные ipaddresses экземпляра aws, потому что ohai не поддерживает privateip
приписывать. Любая помощь будет высоко оценена.
1 ответ
Вы можете прочитать local-ipv4
значение в node['ec2']['local_ipv4']
приписывать. IIRC все метаданные EC2 включены в node['ec2']
,
Если вы по-прежнему предпочитаете выполнять команду, вы можете использовать shell_out!
помощник:
output = shell_out!('mycommand --some --arguments').stdout
Как они сказали в комментариях, для этого конкретного случая вы также можете использовать Chef::HTTP
учебный класс:
http = Chef::HTTP.new('http://169.254.169.254')
privip = http.get('/latest/meta-data/local-ipv4')