有没有办法从纯Java实现中引导Chef节点?

有没有办法从纯Java实现中引导Chef节点?,java,chef-infra,bootstrapping,knife,jclouds,Java,Chef Infra,Bootstrapping,Knife,Jclouds,通常,使用boostrap引导Chef节点,如下所示: knife bootstrap mynode.example.com -N mynode -x myuser --sudo --run-list "role[myrole]" 我想知道是否有一种方法可以从Java实现这一点,而不需要在操作系统上安装Ruby或Chef。例如,JClouds似乎有一个Chef实现,但我不知道它是否首先需要在本地安装Ruby/Chef。想法?厨师邮件列表中有关于这个主题的内容,约翰·E·文森特在邮件列表中写道

通常,使用
boostrap
引导Chef节点,如下所示:

knife bootstrap mynode.example.com -N mynode -x myuser --sudo --run-list "role[myrole]"
我想知道是否有一种方法可以从Java实现这一点,而不需要在操作系统上安装Ruby或Chef。例如,JClouds似乎有一个Chef实现,但我不知道它是否首先需要在本地安装Ruby/Chef。想法?

厨师邮件列表中有关于这个主题的内容,约翰·E·文森特在邮件列表中写道

您将无法在Java和Java中真正重新实现chef 在JRuby上运行客户端是不可能的

您可能可以使用jruby并为某些API引入chef gems 互动,如果需要的话

最后,Chef是用ruby编写的。不管是什么尴尬的要求 我们必须接受这一点

Daniel Cukier的回答是:

我做了一些测试,不可能在系统中运行chef JVM。我唯一的选择是使用jcloud配置机器,然后运行 引导脚本是通过ssh实现的


我想链接线程的完整讨论应该提供您需要的详细信息。但是,由于我自己不太了解,所以我无法详细阐述。这正是jclouds chef的用意。正如Everett所指出的,请参见Chef的引导节点和ComputeService部分,这正是jclouds Chef所做的。查看指南,了解其工作原理


您不必在本地或要引导的机器上安装Ruby/Chef或任何东西。唯一的要求是要引导的机器启用了SSH访问,并且可以连接到Internet。jclouds chef将连接到它,负责安装Ruby、chef以及所有需求,并引导节点,就像knife一样。

我在管理Ruby/chef环境稳定方面遇到了很多困难,如果有Java,我会喜欢它安装最新的chef DK(开发工具包),它将提供各种chef管理,所有命令都使用嵌入的ruby副本。这将使您的厨师工作站保持稳定。jClouds看起来很有趣,但我害怕切换,因为另一个客户端需要非常努力才能跟上标准的基于ruby的工具。
knife bootstrap
只封装了一些SSH调用。您可以查看源代码并用您喜欢的任何语言复制它