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

时间:2012-10-02 13:42:13

标签: deployment sysadmin chef

我的环境(Graphite)如下所示:

  • N个工作服务器
  • 1个转发工作到这些工作服务器的中继服务器
  • 1个可以查询中继服务器的Web服务器。

我想使用Chef在EC2中设置和部署此环境,而无需单独创建每个工作服务器,获取其IP并将其设置为中继菜谱中的属性,创建该中继,获取IP,将其设置为Web服务器菜谱中的属性等

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

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

2 个答案:

答案 0 :(得分:2)

您需要的是:

  1. knife-ec2 - 用于启动/停止Amazon EC2实例。
  2. chef-server - 能够在食谱中使用搜索功能。它也应该可以从您的EC2实例访问。
  3. search - 通过这种方式,您可以在大厨配置的节点中找到您使用不同查询所需的节点。
  4. 我最近写了一篇文章How to Run Dynamic Cloud Tests with 800 Tomcats, Amazon EC2, Jenkins and LiveRebel。它涉及负载均衡器安装,负载均衡器必须知道它所平衡的服务器的所有IP地址。您可以查看recipe of balanced node,它如何查找loadbalancer:

    search(:node, "roles:lr-loadbalancer").first
    

    并查看loadbalancer recipe,它如何查找所有平衡节点并更新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
    

答案 1 :(得分:1)