Deployment 如何使用Chef部署整个环境(服务器组)?

Deployment 如何使用Chef部署整个环境(服务器组)?,deployment,sysadmin,chef-infra,Deployment,Sysadmin,Chef Infra,我的环境()如下所示: N个工作服务器 1个中继服务器,将工作转发给这些工作服务器 1个可以查询中继服务器的web服务器 我希望使用Chef在EC2中设置和部署此环境,而不必单独创建每个工作服务器,获取其IP并将其设置为中继cookbook中的属性,创建中继,获取IP,将其设置为web服务器cookbook中的属性,等等 是否有一种使用chef的方法可以确保在不必手动设置IP的情况下正确部署、配置和运行环境?特别是,我希望能够添加一个工作服务器并让中继更新其工作列表,或者将中继服务器替换为另

我的环境()如下所示:

  • N个工作服务器
  • 1个中继服务器,将工作转发给这些工作服务器
  • 1个可以查询中继服务器的web服务器
我希望使用Chef在EC2中设置和部署此环境,而不必单独创建每个工作服务器,获取其IP并将其设置为中继cookbook中的属性,创建中继,获取IP,将其设置为web服务器cookbook中的属性,等等

是否有一种使用chef的方法可以确保在不必手动设置IP的情况下正确部署、配置和运行环境?特别是,我希望能够添加一个工作服务器并让中继更新其工作列表,或者将中继服务器替换为另一个,并让web服务器相应地更新其引用


也许这不是Chef的目的,更多的是针对每台服务器的配置和部署,如果是这样的话,什么样的技术可以促进这一点?

您需要的是:

  • -用于启动/停止Amazon EC2实例
  • -能够在食谱中使用搜索。它也应该可以从EC2实例访问
  • -有了它,您将能够在chef提供的节点中找到使用不同查询所需的节点
  • 我最近写了一篇文章。它涉及到loadbalancer的安装,loadbalancer必须知道它所平衡的服务器的所有IP地址。您可以查看loadbalancer的外观:

    search(:node, "roles:lr-loadbalancer").first
    
    并查看,它如何查找所有平衡节点并更新apache配置文件:

    lr_nodes = search(:node, "role:lr-node")
    
    template ::File.join( node[:apache2][:home], 'conf.d', 'httpd-proxy-balancer.conf' ) do
      mode 0644
      variables(:lr_nodes => lr_nodes)
      notifies :restart, 'service[apache2]'
    end
    

    也许你在找这个