После редактирования OP, используйте
my_pc = `hostname`.strip
, чтобы избежать новой строки в вашей строке.
Это работает, как и ожидалось,
> my_pc
=> "TSL-PCM-126"
> puts inventory["all"]["children"]["#{my_pc}"]
{"children"=>{"my_host-TSL-PCM-126"=>{"hosts"=>{"TSF-W01"=>{"ip"=>"192.168.0.201"}}
Вам не нужна строкахотя интерполяция:
> inventory["all"]["children"][my_pc]
=> {"children"=>{"my_host-TSL-PCM-126"=>{"hosts"=>{"TSF-W01"=>{"ip"=>"192.168.0.201"}}}}}
В вашей переменной / хэше либо есть опечатка, либо вы пытаетесь присвоить возвращаемое значение puts
, которое равно nil.