В 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')
Другие вопросы по тегам