【问题标题】:How do i automate assigning nodes to environments?如何自动将节点分配给环境?
【发布时间】:2023-07-13 18:27:01
【问题描述】:

您可以在引导时将节点分配给环境,但我已经有一堆生产节点位于 _default 中。

我可以使用刀将它们分配给其他环境,或者我正在考虑为每个环境分配一个角色,该环境具有运行 chef-client::config 并设置环境属性的配方,然后我可以将节点分配给正确的环境角色。我认为使用角色的问题是我必须跳过额外的圈子才能在测试厨房中连接东西。

厨师们通常如何解决这个问题?

【问题讨论】:

    标签: chef-infra chef-recipe knife cookbook


    【解决方案1】:

    正确的起点是 knife exec 和转换脚本。

    这可能会让你开始:

    knife exec -E 'nodes.transform("roles:foo") {|n| n.chef_environment = "foo" }'
    

    参数有一个搜索查询(你也可以使用"*:*" 来抓取所有节点)然后对块中的每个节点对象做一些事情。如果块的返回值为 true-y,则保存,如果为 false-y,则不保存。

    【讨论】:

    • 您是否曾经通过 chef-client 食谱为节点分配环境? 《学习厨师》一书中提到了这种方法,但我不明白它比只使用刀有什么好处。
    • 没有读过这本书,所以你必须更具体。通常,厨师客户端食谱中的内容将写入 client.rb 配置,非常非常不推荐,因为它会不断覆盖来自厨师服务器的信息。
    最近更新 更多