6

我正在尝试检索 Vagrantfile 中指定的主机 IP 地址:

config.vm.network :hostonly, "33.33.33.33"

在配方文件中:

mycookbook/files/default/xdebug.ini

[xdebug]
zend_extension = "/usr/lib/php/modules/xdebug.so"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = "***HERE***"
xdebug.trace_output_dir = "/tmp"
xdebug.max_nesting_level = 200
4

3 回答 3

12
node[:network][:interfaces][:eth1][:addresses].detect{|k,v| v[:family] == "inet" }.first

实际上,您可以通过登录虚拟机(使用vagrant ssh)并运行 shef. 并在那里检查节点对象。

于 2013-01-25T16:43:20.400 回答
1

如果要检索主机的 IP,可以使用:

在你的食谱中:

你的/食谱/路径/食谱/default.rb

ip = node[:network][:interfaces][:eth1][:addresses].detect{|k,v| v[:family] == "inet" }.first
remote_ip = ip.gsub /\.\d+$/, '.1'

template "/etc/php.d/xdebug.ini" do
  source "xdebug.ini.erb"
  owner "root"
  group "root"
  mode 0644
  variables({
              "remote_host" => remote_ip
            })
end

并在模板中: your/cookbook/path/templates/default/xdebug.ini.erb

[xdebug]
zend_extension = "/usr/lib/php/modules/xdebug.so"
xdebug.profiler_append = 0
xdebug.profiler_enable = 0
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = "/tmp"
xdebug.profiler_output_name = "cachegrind.out.%t-%s"
xdebug.remote_enable = 1
xdebug.remote_handler = "dbgp"
xdebug.remote_host = <%= @remote_host %>
xdebug.trace_output_dir = "/tmp"
xdebug.max_nesting_level = 200
于 2013-01-28T10:10:46.947 回答
0

我查看了ohai的 json 输出,并在提示之前寻找初始vagrant ssh登录输出中显示的内容:

$ vagrant ssh
Last login: Tue Sep 29 13:40:10 2015 from 10.0.2.2
vagrant@vagrant:~$

在 ohai 输出中,我在其他位置找到了 10.0.2.2

[:network][:default_gateway]  

根据 Draco 的信息,我通过在 ssh 中启动shef确认了这一点

chef >     node[:network][:default_gateway]
 => "10.0.2.2"

这对我有用,我可以在 bash 中针对我在主机上设置的 python SimpleHTTPServer 手动卷曲。接下来是在厨师中使用它。

这是我在 Vagrantfile 中的网络条目,以防万一这仅适用于我的特定 vagrant 网络配置:

config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"

FWIW,使用 Draco 的回答将我指向另一个 IP 地址,这对我不起作用。

于 2015-09-29T21:07:31.090 回答