扩展一个刀插件,因为一个特定的服务有一些预定义和优化的数据库服务器,带有一个API来驱动它们,添加用户等等,我开始想知道:
如果我向刀具添加更多子命令(例如“数据库实例创建”)以创建特定预配置数据库服务器设备的实例,如何在ChefDK中编写将调用这些命令的配置配方?
虽然我想要回答这个问题,但如果事实证明你更有兴趣警告我,如果我这样做会损害配方/食谱的可移植性,那么也告诉我另一种方法来利用pre由 批准的云提供商提供的构建,优化的特殊用途设备。 (“你做错了”是一个无用的答案,除非它包含对如何正确操作的/指针的解释。)
(目前正尝试使用“厨师提供”完全在ChefDK内部工作;想要在开始扩展之前解决这些简单的事情。)
扩展:
显然,我没有很好地表达这个问题,这可能表明我对这个话题一无所知。所以,让我稍微扩展一下,看看是否有帮助。
在ChefDK内工作,期望使用'chef provision'(传递给chef-provisioning,是)创建一个至少包含web服务器实例的web应用程序,db server instance(特定应用程序所需的其他部分,但他们都会至少使用这些组件。)
我修改了一个刀插件,使其能够创建由云服务供应商提供的数据库服务器的实例,而不是使用此脚本自行创建和优化。在这样做之后,我发现我没有看到我将如何使用我为应用程序设置的chefDK配置菜谱。
对@tensibai要求配方伪代码表示“谢谢”,因为当我坐下来将其添加到此处时,我意识到我甚至不知道创建实例的伪代码是什么样的。我修改过的刀插件也可以在服务器上创建数据库和用户,并且伪代码很清楚,但是实例化服务器本身并不是,所以我显然对这个分数比我最初想的更加无知(总是两者都是有用和羞愧地意识到你知道甚至比你认为的那个小知道更少。
虽然实例化后的伪代码是明确的,但机制不是,因为我的chefdk系统不能直接看到db服务器,所以可以从中创建数据库,用户等的唯一方法是通过供应商的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
这有帮助吗?或者我设置的约束使它变得不可能?