0

扩展一个刀插件,因为一个特定的服务有一些预定义和优化的数据库服务器,带有一个 API 来启动它们、添加用户等,我开始想:

如果我确实向刀添加了更多子命令,例如“数据库实例创建”以创建特定预配置数据库服务器设备的实例,我如何在 ChefDK 中编写将调用这些命令的配置配方?

虽然我想知道这个问题的答案,但如果事实证明你更感兴趣警告我如果我这样做会损害食谱/食谱的可移植性,也请告诉我另一种利用预建的方法,由您认可的提供商提供的经过优化的专用设备。(“你做错了”是一个无用的答案,除非它包含对如何正确操作的解释/指针。)

(目前尝试使用“厨师供应”完全在 ChefDK 内部工作;想要在我开始扩展之前解决简单的问题。)

扩张:

显然我没有很好地表达这个问题,可能表明我自己对这个话题一无所知。所以让我稍微扩展一下,看看是否有帮助。

在 ChefDK 中工作,期望使用“chef provision”(传递给 chef-provisioning,是的)来创建一个 Web 应用程序,其中至少包含一个 Web 服务器实例、数据库服务器实例(特定应用程序所需的其他点点滴滴,但它们)都至少使用这些组件)。

我修改了一个刀插件,使其能够创建云服务供应商提供的数据库服务器的实例,而不是自己用这个脚本创建和优化一个。这样做之后,我突然想到,我没有从我为应用程序设置的 chefDK 供应食谱中看到我将如何使用它。

感谢@tensibai 要求提供配方伪代码,因为当我坐下来在这里添加它时,我意识到我什至不知道创建实例的伪代码是什么样的。我修改的刀插件也可以在服务器上创建数据库和用户,并且伪代码很清楚,但实例化服务器本身不是,所以我显然比我最初想象的更完全无知(总是两者有用和谦卑地意识到你知道的甚至比你认为自己知道的少)。

虽然实例化后的伪代码很清楚,但机制却不是,因为我的 chefdk 系统无法直接看到数据库服务器,因此可以从中创建数据库、用户等的唯一方法是通过供应商的 API,刀插件知道如何使用。(是的,另一种方法是让同一云中的厨师服务器为此直接操作数据库,但目前该服务器不存在。)它将遵循以下原则:

using a given set of attributes: create the named database assign the users listed for that database set the schema for the db load any required initialization data repeat if necessary -- if, for example, the particular app the attributes described accesses more than one db

这有帮助吗?还是我设置的约束使它变得不可能?

4

0 回答 0