Sem acesso à sua receita do app_server, inferimos que você está usando o atributo node['apache']['proxypass']
para preencher uma linha em um arquivo de configuração do apache gerado a partir de um modelo.
Meu palpite é que a linha relevante em seu modelo é algo assim:
ProxyPass <%= node['apache']['proxypass'] %>
Acho que você terá mais sucesso se usar elementos mais granulares para compor essa linha em seu modelo. Se o endereço IP para o qual você deseja fazer solicitações de proxy for diferente em todos os ambientes, você poderá utilizar os recursos de pesquisa do Chef para determinar o endereço IP necessário e passar esse endereço IP para o modelo como uma variável.
O código na sua receita pode ser algo assim:
# this search assumes that the role 'myapp_backend' is in the run list of the backend server you need to discover.
# the search returns an array of node objects, for simplicity we'll just take the first result.
proxypass_backend = search(:node, "roles:myapp_backend AND chef_environment:#{node.chef_environment}").first
template ::File.join(node['apache']['dir'],'sites-available','myapp.conf') do
variables({
:proxypass_local_path => '/',
:proxypass_remote_ip => proxypass_backend['ipaddress'],
:proxypass_remote_port => '8080',
:proxypass_remote_path => '/'
})
source 'myapp.conf.erb'
end
E a linha no seu modelo seria algo como isto:
ProxyPass <%= @proxypass_local_path %> http://<%= @proxypass_remote_ip %>:<%= proxypass_remote_port %><%= @proxypass_remote_path %>
Por motivos de simplicidade, eu especifiquei valores estáticos para a porta e o caminho remotos, mas eles também podem ser definidos usando valores de atributos que podem ser substituídos no nível da função ou do ambiente. Como a pesquisa retorna objetos de nó inteiros, qualquer atributo de um nó retornado por uma pesquisa (por exemplo, a porta na qual um serviço está sendo executado) também pode ser usado para preencher variáveis de modelo (por exemplo, proxypass_remote_port
).