【问题标题】:automated deployments using chef使用 chef 自动部署
【发布时间】:2013-10-07 11:20:20
【问题描述】:

我正在运行我的 ruby​​ on rails 电子商务应用程序,该应用程序在生产中的几个 ec2 实例上运行。自从我们进行持续集成以来,我还没有启用自动缩放,我们会在需要时进行部署。我出于所有原因使用厨师。我试图弄清楚如何使用厨师自动和手动干预将代码部署到多个 ec2 实例。我尝试在初始 ec2 实例期间部署代码工作正常。但我的问题是如何在自动缩放模式下执行此操作,以便实例从 github 或位存储桶中提取最新代码,并在捆绑更新等之后部署它。

【问题讨论】:

    标签: ruby ubuntu amazon-web-services chef-infra


    【解决方案1】:

    很公平。这就是我所做的,它工作正常:

    我创建了一个具有以下设置的 AMI:

    1. 安装chef client

    2. 创建/etc/chef目录

    3. 从厨师工作站复制your_company-validator.pem到AMI /etc/chef/validation.pem
    4. 如下创建/etc/chef/client.rb

    如果您使用 chef-solo,请进行相应的更改。

    cat >> /etc/chef/client.rb <EF
    log_level        :auto
    log_location     STDOUT
    chef_server_url  "https://api.opscode.com/organizations/your_company"
    validation_client_name "you_company-validator"
    EF
    

    现在,您已在 AMI 中为厨师引导程序配置了上述所有内容。

    当您启动 AMI(使用自动缩放或任何其他方式)时,提供 user-data 它将在其中运行带有您选择的 run_list 的 chef-client。我提供以下用户数据:

    #!/bin/bash
    cat > /etc/chef/firstboot.json << EOL
    {"run_list": ["recipe[java::oracle]"]}
    EOL
    chef-client -j /etc/chef/firstboot.json > /tmp/initialize_client.log 2>&1
    

    基本上,我正在创建一个 .json 文件,我将在其中指定要运行的配方/角色/运行列表。提供用户数据后,它将在第一次启动时执行,并且 chef-client 将与 run_list 一起运行。

    我认为这就是您要寻找的。 总结一下:

    1. 创建一个预装了chef-client, client.rb and validation.pem的AMI
    2. 然后在实例启动时提供user-data

    这对我来说非常有效。如果此设置给您带来任何麻烦,请告诉我。我已经使用这个很长一段时间了。

    因此,当我使用 autscaling 启动我的实例时,它会自动与我选择的食谱一起进行厨师引导。

    假设: 在执行此操作之前,您已在厨师服务器上创建了所有食谱/角色。否则引导程序最终会失败。

    【讨论】:

    • 你好@slayedbylucifer 听起来很棒!!!我会尽快尝试并让你更新
    • 您好,我尝试了您建议的过程,但是在启动 ec2 实例后,它会引发错误无法向厨师服务器 (http 401) 进行身份验证。服务器响应:---------------- 未能以“ip-10-128-94-138.ap-southeast-1.compute.internal”身份进行身份验证。确保您的 node_name 和客户端密钥正确。如果这些设置正确,您的 client_key 可能无效。我应该如何调试它以及会出现什么问题。
    • 当 chef-client 第一次运行时,它会自己创建 client.pem。您的图像中是否有任何之前运行的 chef-client 留下的 client.pem?另外,您是否在节点上复制了您的 validation.pem 密钥?
    • 我不明白为什么要创建预先安装了 chef 的 AMI...“knife bootstrap”命令将安装 chef 并自动配置 /etc/chef 目录。更好的是,您可以使用 knife 的 ec2 插件并额外启动 VM。
    • @Mark O'Connor、knife bootstrapknife ec2 当您通过 AWS 自动扩展启动实例时,插件无济于事。
    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    相关资源
    最近更新 更多