AWS opswork可以将docker部署到集群,ECS(ec2容器服务)也是如此。 EC2中的服务发现可以使用weave.net或consul等实现...当我们使用opsworks进行docker部署时,有关如何添加动态服务发现的任何建议,所以在我的docker容器中,我可以轻松获得终点其他部署的Web服务?
答案 0 :(得分:0)
在配方内部,您可以使用搜索功能,使您可以使用search(:node)
搜索当前堆栈中的opsworks实例。此方法返回chef节点数组:
> search(:node)
=> [#<Chef::Node:0x000000070a44c8
@attributes=
{"aws_opsworks_instance_id"=>"----",
"hostname"=>"--",
"os"=>"linux",
"platform"=>"ubuntu",
"platform_family"=>"debian",
"ipaddress"=>"172.31.85.144",
"fqdn"=>"---.localdomain",
"domain"=>"localdomain",
"network"=>{"interfaces"=>{"aws_opsworks_virtual"=>{"addresses"=>{"172.31.85.144"=>{"family"=>"inet"}}}}},
"kernel"=>{"machine"=>"x86_64"},
"cloud"=>
{"public_ips"=>["0.0.0.0"],
"private_ips"=>["172.31.85.144"],
...
您可以使用
获取Opsworks堆栈中的所有IP> search(:node).map(&:ipaddress)
=> ["172.31.85.144", "172.31.85.31", "172.31.85.16"]
然后,您可以通过env变量将此列表传递给docker资源。