Juju如何与Chef共存,让自动化流程“更进一步”?

从这篇文章可以清楚地看出,Juju与Chef Server不同。 Juju位于业务流程或服务层,而Chef则更多地位于单个服务器或配置层。

在Canonical的主要Juju页面之一 ,它指出Juju旨在与Chef和Puppet这样的工具“共存”,使这一过程“更进一步”。 在过去的几个星期里,我已经在这个主题上搜索了互联网,并且无法找到一个很好的解释,但是像Chef这样的工具将如何与Juju 共存

因此,要分解标题中的首要问题:( Juju与Chef Server一起工作的特别兴趣)

  • 什么是“用厨师写的”魅力的例子? 它只是一个用bash编写的魅力,然后调用chef-solo命令? 如果是这样,魅力可以调用chef-client命令与Chef Server协同工作吗?
  • Juju和Chef之间的重叠在哪里? 例如,apache2 charm具有其config-changed挂钩,它在配置中进行更改,在Chef世界中,将通过应用模板文件在配方中进行更改。 如果Juju魅力与主厨关于部署apache2服务(群集)的食谱一起工作,那么几乎看起来必须编写“apache2-chef”魅力,以便您可以分离出任务。 在这种情况下,魅力商店中的apache2魅力不会有用。
  • 如果您将Chef角色应用于由Juju部署/管理的节点(服务单元),并且您的系统管理员决定更改特定服务器角色的防火墙规则并在Chef角色中执行此操作,那么Juju是否会覆盖这些更改?
  • 更简单的说,Juju可以像Ironfan一样成为Chef服务器包装器吗?

我认为Chef Server是如何,而Juju可以如何做,但也带来了什么到表。 这意味着可以查询服务和机器的实际当前状态并采取相应措施。 您不能在Chef Server中执行此操作。 我的目标是将Juju的意识和服务编排function引入Chef服务器管理的基础架构中。

几乎看起来必须编写一整套魅力,其中遗漏了所有Chef管理的任务/配置信息。

我很想听到Canonical(如Jorge Castro)和Opscode(如A. Jacob或J. Timberman)的人的称重。

很棒的问题!

tl;博士

我想在几条评论中打破你的问题……首先,这里有一些集成厨师和juju的一般方法:

  • 魅力钩子可以使用在服务单元上运行独奏风格的现有厨师食谱(推荐)

  • juju服务单元使用厨师节点从属服务向现有厨师服务器注册

这些想法尚未针对厨师实施 /测试,但存在木偶等价物。

……嗯..不那么简短的回答

这里有两个关于整合厨师和juju的方法的细分:

Juju作为顶级狗

juju在这里举办表演。 juju提供的最大价值是分布式配置管理期间的事件协调……因此是“服务编排”的名称。 Juju的魅力包括钩子,在协调服务管理时,在“正确的时间”由juju调用。 这些钩子的实现非常开放。 它们是shell脚本,源代码,木偶清单或……厨师食谱。

Juju将任何服务配置中的一些内容分解为:

  • “安装”..特定于将特定服务安装到节点上的位

  • “关系”…将该服务与其他服务相关联所需的配置位

使用厨师食谱作为钩子实施的关键正是这一点……你必须确保你使用的食谱尊重这种关注点的分离。 否则,没有什么可以阻止使用现成的烹饪书。 您可以利用您花费时间/金钱开发的现有配方….您只需要确保可以将特定于关系的内容与特定于安装的内容分开调用。

我们需要一些这方面的例子,但我认为这将是受欢迎的b / c厨师有一个伟大的dsl,一个伟大的模板工具,并且在编写复杂配置时使用比bash更愉快。 对于简单的配置,厨师食谱有点矫枉过正,所以这种整合方法几乎是两个世界中最好的……而且还有很多优点。

厨师作为顶级狗

这里的想法是将juju服务集成到现有的厨师服务器管理基础架构中。 要做到这一点,你需要编写一个厨师节点从属魅力。 该下级服务将附加到主juju服务,并且将有效地将这些服务作为节点(特别是角色)与厨师服务器一起注册。 Subs可以在juju服务启动期间附加,也可以在每个服务生命周期的任何时间附加。

我认为这与puppet-node sub非常相似。 所有必要的键,角色等都将通过config指定给chef-node从属魅力。 我从那里开始。 更复杂的方法是,chef-node sub可以查询它所连接的主要服务和它的chef-server来动态确定角色,但这比在sub的config中指定它们要困难得多。

意见

如果可能的话,我肯定会推荐上面的方法1。 在配置工具之上配置协调层可能会长期运行良好。 毋庸置疑,现实世界的基础设施在一段时间内可能是两种方法的组合或变体……尤其是在迁移过程中。 如果由两个工具管理的组件在某种程度上彼此正交,则使用方法2的计划共存可能仅起作用。 不确定到底会是什么样子。 也许juju和厨师管理分开的相对分离的服务? 我怀疑让juju管理主要服务并让厨师管理更多基础设施方面可能会很好。 不知道。 虽然这是一个较长的讨论:)

旁注…您还可以使用juju来管理厨师服务器本身……甚至是大型复杂的多层厨师服务器安装。 我最近没有看过厨师服务器的魅力,但如果它目前没有处理服务的分层和分离,那么肯定可以做到。

我很想看到上面提到的两种类型的厨师整合的更多例子…它已经在我的愿望/待办事项列表上一段时间了,但是还没有足够高的泡沫来优先完成…请帮助,如果你有兴趣!

好吧,这是一个相当大的漫游:)…让我们从那里开始,然后我们可以在后续的评论块中详细介绍。