【问题标题】:Deploying environment-dependant configuration to Apache Karaf将依赖于环境的配置部署到 Apache Karaf
【发布时间】:2017-12-30 14:42:13
【问题描述】:

是否有将依赖于环境的 cfg 文件部署到 karaf 的标准方法?假设我有用于开发和质量检查的 2 个版本的 xyz.cfg 文件。在这种情况下,我是否需要为 Dev 和 QA 创建单独的功能?

谢谢!

【问题讨论】:

  • Afaik,这是不可能的。 cfg文件可以有系统属性和默认值,但我认为不可能根据系统属性来选择功能
  • 您的意思是部署到运行 Karaf 吗?如果是这样,您如何部署 cfg 文件?脚本? CI?或者你的意思是,你需要为不同的环境组装不同版本的应用程序?
  • 请在下面找到我的答案。

标签: osgi apache-karaf karaf


【解决方案1】:

也许有一种方法具有功能。但我不知道怎么做。我们使用karaf-maven-plugin 来构建定制的karaf。在这种情况下,您可以为 Dev 构建一个,为 QA 构建一个。 Here 是完整的描述。

希望这对您有所帮助。

【讨论】:

    【解决方案2】:

    我想我找到了我正在寻找的解决方案。 Karaf 功能支持配置文件的配置。请参阅此处的“功能配置”和“功能配置文件”部分:

    https://karaf.apache.org/manual/latest/provisioning

    我所要做的就是为每个环境添加一个功能,其中我只包含该环境所需的配置文件。然后对于部署,我部署了我的捆绑包和包含我要部署到的环境的配置的功能。

    例子:

    <feature name="dev">
      <configfile ...>
    </feature>
    
    <feature name="qa">
      <configfile ...>
    </feature>
    

    然后,在 dev 中安装:

    repo-add my-repo
    
    feature:install some-feature-containing-bundles
    
    feature:install dev
    

    【讨论】:

    • 这不好,因为您必须为不同的环境提供不同的工件和可分发文件,而不是通过环境提升相同的工件。
    • 所有环境的捆绑包都相同,但 cfg 的自然不同。因此,我在上面描述的想法是让 1 个 repo 具有 1 个包含捆绑包的功能,以及每个环境的 1 个功能,其中包含该特定环境的 cfg。然后,在升级到特定环境时,先安装捆绑功能,然后安装包含目标环境的 cfg 的功能。
    猜你喜欢
    • 1970-01-01
    • 2015-06-14
    • 2012-04-01
    • 1970-01-01
    • 2018-11-24
    • 2017-04-07
    • 1970-01-01
    • 2011-01-11
    • 1970-01-01
    相关资源
    最近更新 更多