riz*_*zen 48 configuration-management chef
我使用并喜欢 Puppet。我搬到了一家新公司,他们正在收养厨师。所以我正在尝试学习 Chef,但我很难将它们拼凑在一起,因为我仍然在 Puppet 中思考 =)
这些是我的问题:
我完成了入门教程,我看到他们有 EC2 教程,但我从未使用过 EC2,所以我很难理解它们。在这一点上,我已经托管了 Chef 并且我开始尝试配置单个节点。我从这里去哪里?我需要开始看公共食谱吗?
Opscode 上的文档还可以,但不如 Puppet 的好。我的搜索中是否还有其他好的厨师资源?
jti*_*man 84
编辑此问题和答案已有多年历史。最终的最佳实践是通过 Chef Software, Inc. 制作的Learn Chef Rally自定进度培训模块教授的。大部分原始答案如下。
在这个答案中,“Chef”或“chef-client”通常指的是 Chef Infra,即产品。Opscode公司更名为厨师软件公司在2013年。2019年4 月,Chef 开放了其所有产品的源代码,并创建了一致的品牌命名。
不清楚在 ruby DSL、JSON 或从管理控制台中设置角色是否更好?为什么有多种方法可以做同样的事情?
2019 年更新:策略文件是最好的工作流程。角色被认为是一种低级实践,Chef Software, Inc. 建议迁移到 Policyfiles。
因为人们有不同的工作流程,所以有多种方法可以做同样的事情。您选择最适合您环境的工作流程。让我解释一下这些差异是什么,以便您做出明智的决定。
用于角色的 Ruby DSL 的存在使在不了解 JSON 语法的情况下更容易编写角色。这是开始使用角色的简单方法。进行更改后,您可以使用刀将它们上传到 Chef 服务器。
knife role from file myrole.rb
Run Code Online (Sandbox Code Playgroud)
这会将角色转换为 JSON 并将其存储在服务器上。如果您有一个强制执行 Chef 存储库的环境,您的角色将在其中作为事实来源,这将非常有效。
JSON 是 Chef Server 存储的内容,因此您还可以直接在管理控制台中编辑 JSON。它确实需要比 Ruby DSL 更多的字段,以便 Knife 正确识别上传。这些细节在某种程度上是通过 Web UI 隐藏的。
使用 webui/管理控制台编辑角色的缺点是它们不在您的本地版本控制系统中,除非您从服务器下载它们。你可以用刀做到这一点:
knife role show myrole -Fj
Run Code Online (Sandbox Code Playgroud)
在-Fj“以JSON格式显示。”讲述刀 如果您愿意,可以将输出重定向到 .json 文件。
多年前的更新:有额外的 Knife 命令可用于处理本地 Chef 存储库中的文件。目前这些命令仅支持 JSON 格式的文件。一个社区 RFC是开放的,它将解决为这些插件添加对 Ruby DSL 的支持。以下是工作流程的简要摘要。
检查服务器和本地文件之间的内容差异。
knife diff roles/myrole.json
Run Code Online (Sandbox Code Playgroud)
上传 JSON 格式的角色文件。在roles/需要的路径。这被映射到服务器上的相同 API 端点。
knife upload roles/myrole.json
Run Code Online (Sandbox Code Playgroud)
从服务器下载内容覆盖存储库中的文件内容。
knife download roles/myrole.json
Run Code Online (Sandbox Code Playgroud)
这些命令来自knife-essentials,它内置在厨师客户端包中。
你能把食谱组织成子目录吗?例如-我们有自定义软件,我想为其编写食谱并将其粘贴到:chef-repo/cookbooks/ourcompanystuff/customsoftwarecookbook 这是一个好习惯吗?
不可以。Knife 期望食谱应该存放在哪里,因为它使用 API 将食谱上传到服务器。这是在knife.rbwith 中设置的cookbook_path。在旧版本的 Chef Infra 中,您可以为食谱指定一系列路径,但此方法已被弃用,因为它需要更多的维护并且让用户感到困惑。
按照惯例,我们使用食谱目录中的名称前缀来命名客户特定或站点特定的食谱。对于您的示例,它将是:
chef-repo/cookbooks/ourcompany_customsoftware
Run Code Online (Sandbox Code Playgroud)
“我们的公司”可能有多种不同的食谱,具体取决于您在做什么。
进一步参考:
我是否为每种类型的角色创建一个说明书,指定它的作用?我是否有这些食谱包括其他食谱(即 - 我的网络服务器角色的食谱包括 apache 食谱)。我不确定如何处理食谱之间的依赖关系和继承。
角色和食谱之间没有直接关系或依赖关系。
角色有一个运行列表,它指定应应用于具有该角色的任何节点的配方和其他角色。节点有一个运行列表,其中可以包含角色或配方。当 Chef 在节点上运行时,它会展开它包含的所有角色和配方的运行列表,然后下载所需的说明书。在节点运行列表中:
recipe[apache2]
Run Code Online (Sandbox Code Playgroud)
Chef 将下载apache2节点的说明书,以便它可以应用此配方。
您可能有一本特定于您的基础架构中的角色的说明书。更常见的是,您将拥有用于设置某些类型的服务(如 apache2、mysql、redis、haproxy 等)的说明书。然后您会将它们放入适当的角色中。如果您有自定义应用程序特定的事情需要发生来履行角色,那么您可以将其写入自定义食谱(如我上面提到的那样)。
进一步参考:
有没有像 puppets 外部节点分类器这样的东西,所以节点会自动确定它们的角色?
“是的。” Chef Infra Server 自动进行节点数据存储(以 JSON 格式),并且服务器还会自动索引所有节点数据以进行搜索。
进一步参考:
似乎您可以使用 Knife 或在管理控制台中进行配置,或者编辑 JSON 文件?这让我感到非常困惑,为什么有这么多方法可以做事,真是令人麻痹!是否有理由使用其中之一?
Chef Infra Server 有一个 RESTful API,用于发送和接收 JSON 响应。从管理的角度来看,Knife 和管理控制台是用于与 API 交互的用户界面。
您可以更好地使用您喜欢的工具,尽管管理控制台没有 Knife 那么多的功能。大多数使用 Chef Infra 的人更喜欢命令行界面,因为它提供了强大的功能和灵活性,即使是在 Windows 上使用 Chef Infra 的人也是如此。此外,它knife是一个基于插件的工具,您可以创建新插件以与 Chef Infra Server 或基础设施的其他部分进行交互。
Chef Infra 是一组库、原语和 API。它使您可以灵活地构建最适合您的基础架构的配置管理系统。
进一步阅读:
如何在我的开发集群中使用厨师自动配置节点?使用 puppet,我启动了一个连接到 puppermatser 的 VM,并启动了 puppet 运行并自行设置(角色由外部节点分类器确定)。我怎么和厨师一起做这个?- 使用 pem/rb 文件安装厨师,将其绑定到厨师服务器,用刀手动告诉节点它的角色或在管理界面中编辑它,然后启动厨师客户端运行以设置自己?
您将需要使用 Knife bootstrap 插件。这是一个带有刀的内置插件。你像这样调用它:
knife bootstrap 10.1.1.112 -x root -i ~/.ssh/root_id_rsa -r 'role[webserver]'
Run Code Online (Sandbox Code Playgroud)
这会:
root使用 SSH 密钥以用户身份通过 SSH 连接到目标系统 (10.1.1.112) (您可以以另一个用户身份 SSH,然后使用--sudo)。chef-client使用逗号分隔上市运行指定。在此示例中,仅webserver应用角色。这假设目标系统已配置,具有 IP 地址,并且您可以以 root 身份进行 SSH。根据您当地的政策和供应过程,您可能需要调整其工作方式。wiki 上的 Knife bootstrap 页面详细介绍了其工作原理。
Knife 还为许多公共云计算提供商提供插件,例如 Amazon EC2 和 Rackspace Cloud。有适用于 Eucalyptus 和 OpenStack 等私有云环境的插件。还有适用于 VMware、Vsphere 等的插件。您可以在文档中查看更多信息。
进一步阅读:
我的搜索中是否还有其他好的厨师资源?
的厨师文档文件的主要来源。
在学习厨师拉力赛是一个系列的自导模块,你可以学习所有关于厨师红外的各个方面,和其他厨师的产品。
我曾经维护一个博客,在那里我发布了关于 Chef Infra 的提示、技巧和指南:http : //jtimberman.housepub.org/。我有一个名为“快速提示”的系列。由于现实生活环境和其他承诺,我不再有时间维护该网站,但我可能会在未来返回。
Chef 客户可以在支持站点上获得帮助和支持:
Chef 用户社区是额外帮助的绝佳来源:
Chef Software, Inc. 的网站上提供了其他资源。
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
17049 次 |
| 最近记录: |