AWS OpsWorks のインスタンスの IP を Chef レシピで使用しようとしています。コードは次のようになります。
variables(
:db_host => (node[:scraper][:db_host] rescue nil),
:db_user => (node[:scraper][:db_user] rescue nil),
:db_pass => (node[:scraper][:db_pass] rescue nil),
:db_name => (node[:scraper][:db_name] rescue nil),
:beanstalk_host => (node[:opsworks][:layers][:admin][:instances].first[:private_ip])
)
しかし、TypeError - Symbol as array index
エラーが発生します。
私は Ruby 開発者ではないので、何を試せばよいか少し迷っています。ドキュメントにもその構文がリストされています:
次の例では、HAProxy レイヤーの最初のインスタンスのプライベート IP アドレスを取得します。
node[:opsworks][:layers][:lb][:instances].first[:private_ip]
の値をログに記録すると、次のnode[:opsworks][:layers][:admin][:instances].first
ようになります。
["admin1", {"elastic_ip"=>"54.221.245....