仅需最少的 Chef 配置和部署?

仅需最少的 Chef 配置和部署?

我已经把 Chef 的文档读了两遍。但我仍然无法理解它的概念,因为他们跳过了基础知识,直接跳到了使用 chef-server 进行复杂的部署。

使用 chef-solo 和可能的 knife,有没有简单的方法来配置服务器并进行部署?

我可能错了,但看起来我的食谱已经准备好了,这应该是非常简单的。

knife rackspace server create --flavor 1 --image 112

这配置了我的服务器。我可以选择传递 --run-list "recipe[mything]",但我的 ~/my_cookbooks 中的食谱实际上是如何进入服务器的呢?我必须手动传输它们吗?这似乎适得其反。

答案1

如果您使用 chef-solo,则无法使用 knife。Knife 是 chef-server 的 API 客户端,带有一些额外的实用功能(如knife rackspace server create您所提到的)。

要使用 chef-solo 配置服务器,您应该将 chef repo 复制到服务器,然后通过 ssh 在那里运行 chef-solo。据我所知,没有现成的脚本或 knife 插件可以自动执行此操作。

命令knife rackspace server create创建新的 Rackspace 服务器,然后通过调用 为 knife 所知的 chef-server 初始化该服务器knife bootstrap。它无法轻松地与 chef-solo 配合使用。

从技术上讲,knife bootstrap因此knife rackspace server create,可以通过编写自定义引导模板强制与 chef-solo 一起工作,该模板不会初始化 chef-client,而是下载您的 chef 存储库并运行 chef-solo - 请参阅 knife bootstrap --help,其维基页面或来源了解详情。您可以查看安装 chef-client 的示例模板这里。然而,这是一个高级功能,并且没有很好的文档记录。

如果您不想处理安装和管理自己的 chef-server 的复杂性,则可以使用 Opscode 的 Hosted Chef 的免费层,它是 Chef-server SAAS 产品,最多可免费使用三个节点。无论如何,我建议开始使用服务器进行任何认真的工作 - chef-solo 就像一个不错的引导 shell 脚本一样好,仅此而已,而且您错过了许多重要/有趣的功能,例如搜索和数据包,这些功能允许您以数据驱动的方式配置服务器。

答案2

查看刀独奏插件,它可以自动在您的远程服务器上安装 chef-solo,将您的食谱上传到该服务器上,然后运行 ​​chef-solo。它基本上可以自动执行其他回答过这个问题的人建议的操作。

答案3

每次运行 chef-solo 之前,食谱都应该存在于目标机器上,可以通过传输(通过 ftp/scp)或将 cookbook_path 指向网络共享。

如果您希望自动下载食谱,则需要运行 Chef 服务器。是否要运行自己的 Chef 服务器,或使用 OpsCode 托管的服务器取决于您,但这是必需的。

答案4

有一个 git 项目用于此;)

Knife-solo git 项目一旦在本地配置并安装完毕后,就应该能够knife与远程服务器一起运行chef-solo并允许您从本地开发环境进行远程配置到远程服务器,如下所示:

knife solo cook [email protected]

相关内容