【问题标题】:How to migrate from one chef-server to another chef-server如何从一个厨师服务器迁移到另一个厨师服务器
【发布时间】:2025-08-01 06:00:01
【问题描述】:

我有一个现有的厨师服务器设置,其中注册了大约 300 个节点。 现在我想搬到另一个更新版本的厨师服务器。但是我不确定我们如何将所有节点和其他数据从旧的厨师服务器迁移到新的。

【问题讨论】:

    标签: chef-infra knife


    【解决方案1】:

    这里有多个步骤,需要您提供一些信息才能更好地回答您的问题。

    假设

    1. 您的节点是 Linux 节点,您仍在使用 Chef 11 版本。
    2. 您的新厨师服务器拥有所有食谱、角色、数据 包和环境从您的旧厨师服务器移过来。

    步骤

    a) 首先确保您已对当前的 Chef 设置进行了清点,以便了解所有节点名称以及应用于每个节点的运行列表。

    b) SSH 进入您要移动的节点并删除 /etc/chef/client.pem

    c) 现在登录到您的新 Chef 服务器并使用 /etc/chef/chef-validator.pem 内容中的私钥在您的客户端计算机上创建 /etc/chef/validation.pem。

    d) 编辑 /etc/client.rb 并将 chef_server_url 更改为您的新厨师服务器。

    现在在客户端机器上运行 chef-client。这将从新服务器创建一个新的客户端身份,您应该会看到您的客户端名称出现在您的新厨师服务器的 /clients 列表中。

    但你还没有摆脱困境,因为: i)您的客户运行列表将为空,并且 ii) 此客户端尚未出现在您的新服务器的 /nodes 列表中。

    d) 所以你需要使用

    knife node create NODE_NAME
    

    来自工作站的命令,用于命名节点并将其记录到新厨师服务器的数据库中。

    然后使用

    knife node run_list add NODE_NAME RUN_LIST_ITEM(s) 
    

    为每个盒子重新创建运行列表。

    然后使用

    knife node environment_set NODE_NAME ENVIRONMENT_NAME
    

    为每个节点设置环境。

    现在在节点上运行 chef-client,您应该会在 /nodes 中看到该节点以及您分配的运行列表和环境。您还应该在状态选项卡中看到最近一次签到时间的节点。

    是的。你必须这样做 300 次。哦。

    【讨论】:

    • 对我来说,使用 Chef 服务器 12.1,client.rb 位于 /etc/chef/client.rb 而不仅仅是 /etc。
    • 当它建议手动登录到 300 个实例以执行客户端迁移时,这是如何被接受的答案?
    最近更新 更多