【问题标题】:How do I deploy an entire environment (group of servers) using Chef?如何使用 Chef 部署整个环境(服务器组)?
【发布时间】:2012-10-25 01:27:17
【问题描述】:

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

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

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

有没有一种方法可以使用 chef 来确保环境已正确部署、配置和运行,而无需手动设置 IP?特别是,我希望能够添加一个工作服务器并让中继更新其工作列表,或者将中继服务器换成另一个,并让 Web 服务器相应地更新其引用。

也许这不是 Chef 的目的,而是更多地用于每个服务器的配置和部署,如果是这样的话,有什么技术可以促进这一点?

【问题讨论】:

    标签: deployment sysadmin chef-infra


    【解决方案1】:

    你需要的东西是:

    1. knife-ec2 - 用于启动/停止 Amazon EC2 实例。
    2. chef-server - 能够在您的食谱中使用搜索。它也应该可以从您的 EC2 实例访问。
    3. search - 有了它,您将能够在 chef 提供的节点中找到,正是您使用不同查询需要的节点。

    我最近写了一篇文章How to Run Dynamic Cloud Tests with 800 Tomcats, Amazon EC2, Jenkins and LiveRebel。它涉及负载均衡器的安装,并且负载均衡器必须知道它所平衡的服务器的所有 IP 地址。你可以查看recipe of balanced node,它是如何寻找负载均衡器的:

    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
    

    【讨论】:

      【解决方案2】:

      也许您正在寻找这个?

      http://www.infochimps.com/platform/ironfan

      【讨论】:

        猜你喜欢
        • 2018-12-14
        • 1970-01-01
        • 1970-01-01
        • 2018-07-29
        • 1970-01-01
        • 2018-04-17
        • 2019-09-27
        • 2016-10-24
        相关资源
        最近更新 更多