manifest.yml中每个空间的特定配置

时间:2017-09-13 07:53:47

标签: cloudfoundry pivotal-cloud-foundry

有没有办法为特定空间设置manifest.yml属性,例如如果我想在部署到生产空间时有5个服务实例,但只有1个用于所有其他空间?

2 个答案:

答案 0 :(得分:1)

我想到了一些选择:

  1. 您可以使用manifest.yml cli参数覆盖cf设置。因此,您可以将实例计数为1放入manifest.yml文件中(实际上,您不需要这样做,因为一个是默认值,但您可以在文件中放置任何值)以及{ {1}}使用您设置为cli参数的值覆盖cf push的值。例如:manifest.yml

  2. 应用程序的manifest.yml中没有可用的条件逻辑,但是没有什么可以阻止您在清单中使用模板语言。例如,您可以通过Ruby cf push -i <override>(或任何其他模板引擎)运行模板manifest.yml进行一些动态调整,然后使用输出来部署您的应用。

  3. 根本不使用erb。相反,只需使用shell脚本和manifest.yml cli命令和参数的组合。要开始工作还有一些工作要做,但是你可以获得shell脚本的所有动态行为。实际上,它不一定是shell脚本。您可以使用Python或Ruby或在此处插入您喜欢的脚本语言。

  4. 可能不完全是你希望的答案,但希望它有所帮助。

答案 1 :(得分:0)

根据部署工具,您可以参数化实例。例如:在IBM Urban Code Deploy(UCD)中,您可以将实例数声明为组件环境属性,并且可以为每个空间指定不同的值。 DEV,QA可以有1,PROD可以有5。

有多种方法可以使用此属性。

  1. 在manifest.yml
  2. 中添加以下条目
      

    个实例:$ {instance_count}

    可以在Urban Code Deploy中按空间配置 instance_count 参数的值。我相信你也可以使用Concourse或其他部署工具。

    1. 使用cf push命令中的参数。
    2. Urban Code Deploy和其他工具运行cf push命令来推送应用程序。在push命令中,您可以使用-i参数并使用 instance_count 变量,该变量将根据您要推送的空间替换该值。

      您可以使用第一种方法来参数化几个字段,例如内存,日志级别等,这些字段可以具有不同空格的不同值。