我需要在模板文件中设置服务器的外部IP。服务器在NAT后面,所以我打算使用一个静态文件,我将不断更新。该文件将包含本地IP和相关的外部IP。示例如下。厨师使用变量来设置模板中的值
但我需要一种方法来返回变量值并将其应用到我的模板文件中。我只是坚持如何去做这件事。我猜我在我的属性文件中以某种方式将本地IP引用到我的静态文件中。
服务器文件:
192.168.10.1=88.54.45.15
192.168.10.2=88.54.45.16
192.168.10.2=88.54.45.17
192.168.10.3=88.54.45.18
当前模板文件(这正确带回本地IP,所以我需要再使用此作为查找到细的外部IP):
data="local_ip_v4=<%= @local_ip_v4 %>"
data="external_sip_ip=UNSURE WHAT TO PUT HERE"/
我现在使用的数据安装如下:
数据包称为freeswitch,包含:
{ "192.168.1.1": { "extip": "88.54.45.15" }, "192.168.1.2": { "extip": "88.54.45.16" }, "192.168.1.3": { "extip": "88.54.45.17" }, "192.168.1.4": { "extip": "88.54.45.18" }, "192.168.1.5": { "extip": "88.54.45.19" }, "192.168.1.6": { "extip": "88.54.45.20" }, "192.168.1.7": { "extip": "88.54.45.21" }, "192.168.1.8": { "extip": "88.54.45.22" }, "id": "extaddress" }
配方有:
data = data_bag_item('freeswitch', 'extaddress')
template "/usr/local/freeswitch/conf/vars.conf.xml" do
source "vars.conf.xml.erb"
mode 0644
variables(:exitip => data[[node['freeswitch']['local_ip']]['extip']])
end
它我无法格式化的变量部分。仅供参考我有一个属性是['freeswitch'] ['local_ip']。
错误我现在得到的是:
Recipe Compile Error in /var/chef/cache/cookbooks/freeswitch/recipes/default.rb
================================================================================
NoMethodError
-------------
undefined method `[]' for nil:NilClass
Cookbook Trace:
---------------
/var/chef/cache/cookbooks/freeswitch/recipes/default.rb:31:in `block in from_file'
/var/chef/cache/cookbooks/freeswitch/recipes/default.rb:28:in `from_file'
Relevant File Content:
----------------------
/var/chef/cache/cookbooks/freeswitch/recipes/default.rb:
24: mode 0644
25: end
26:
27: data = data_bag_item('freeswitch', 'extaddress')[node['freeswitch']['local_ip']]
28: template "/usr/local/freeswitch/conf/vars.conf.xml" do
29: source "vars.conf.xml.erb"
30: mode 0644
31>> variables(:exitip => data[node['freeswitch']['local_ip']]['extip'])
32: end
感谢您的答复,但您所指定的IP地址,但我不能把这个在我的食谱我在脚本运行之前不知道本地IP。除非我错过了什么? – jaseUK
通常,您可以在配方中使用节点['ipaddress']来获取机器的内部IP,否则您可以检查ohai数据。 –
我决定使用数据包,但是nodeIP我遇到了如何在代码中声明它的问题,请参阅下面的变量。 数据= data_bag_item( 'FreeSWITCH的', 'extip') 模板 “/usr/local/freeswitch/conf/vars.conf.xml” 做 源 “vars.conf.xml.erb” 模式0644 变量( :exitip => data [node ['ipaddress'] ['extip']) end – jaseUK