有没有办法为特定空间设置manifest.yml属性,例如如果我想在部署到生产空间时有5个服务实例,但只有1个用于所有其他空间?
答案 0 :(得分:1)
我想到了一些选择:
您可以使用manifest.yml
cli参数覆盖cf
设置。因此,您可以将实例计数为1放入manifest.yml
文件中(实际上,您不需要这样做,因为一个是默认值,但您可以在文件中放置任何值)以及{ {1}}使用您设置为cli参数的值覆盖cf push
的值。例如:manifest.yml
。
应用程序的manifest.yml中没有可用的条件逻辑,但是没有什么可以阻止您在清单中使用模板语言。例如,您可以通过Ruby cf push -i <override>
(或任何其他模板引擎)运行模板manifest.yml
进行一些动态调整,然后使用输出来部署您的应用。
根本不使用erb
。相反,只需使用shell脚本和manifest.yml
cli命令和参数的组合。要开始工作还有一些工作要做,但是你可以获得shell脚本的所有动态行为。实际上,它不一定是shell脚本。您可以使用Python或Ruby或在此处插入您喜欢的脚本语言。
可能不完全是你希望的答案,但希望它有所帮助。
答案 1 :(得分:0)
根据部署工具,您可以参数化实例。例如:在IBM Urban Code Deploy(UCD)中,您可以将实例数声明为组件环境属性,并且可以为每个空间指定不同的值。 DEV,QA可以有1,PROD可以有5。
有多种方法可以使用此属性。
个实例:$ {instance_count}
可以在Urban Code Deploy中按空间配置 instance_count 参数的值。我相信你也可以使用Concourse或其他部署工具。
Urban Code Deploy和其他工具运行cf push命令来推送应用程序。在push命令中,您可以使用-i参数并使用 instance_count 变量,该变量将根据您要推送的空间替换该值。
您可以使用第一种方法来参数化几个字段,例如内存,日志级别等,这些字段可以具有不同空格的不同值。