应用的Recipe

一个应用recipe由应用描述文件和其所需的服务组成。本文对应用描述文件进行介绍。

应用描述文件存放于应用recipe文件夹的根目录下。该文件描述了应用的名字需要的服务,及它们之间相互依赖(或从属)关系。依赖就意味着Cloudify不会触发从属服务的启动生命周期事件,直至所依赖的服务已经成功启动。

应用名称是相对各种Cloudify管理和监控工具,用于标识应用。因此,相同的Cloudify controller管理的所有应用的名称必须是唯一的。

下面是一个应用描述文件的例子:

application {

name="petclinic-mongo"

 

service {

name = "mongod"

}

service {

name = "mongoConfig"

}

service {

name = "mongos"

dependsOn = ["mongoConfig", "mongod"]

}

service {

name = "tomcat"

dependsOn = ["mongos"]

}

}

Application and Services Properties

为了使 Cloudify recipes 灵活和可配置,可以使用应用级别的properterties文件 (可以在Groovy申明时获取值).

properties文件应按以下名字格式命名:
applicationName-application.properties

在这个properties文件中所有的property应该是唯一的,因为可能会在在应用recipe和其所有相应的服务recipes中通过key使用。

Example #1

假设:

  1. 应用名称是myApp
  2. myApp recipe由两项服务组成 :Tomcat and MySQL
  3. myApp-application.properties 包含了: databasePort=3306

这个databasePort 属性是myApp所有服务实例共用的。它被Tomcat service 和 MySQL service共同知道, 因此用户无需绑定以访问服务上下文,也不需要在其中存储该数据(数据库端口)。

Example #2

假设一项服务称为firstService 并且它包括一个文件 firstService-service.properties ,如下所示:

firstServiceName="my1stService"

firstServiceIconName="my1stServiceIcon.jpg"

firstServiceStart="my1stService_start.groovy"

这时该项服务:

  1. 服务名为"my1stService"
  2. 服务icon名为 "my1stServiceIcon.jpg"
  3. 服务生命周期脚本为 my1stService_start.groovy

如果该应用recipe同时包含了了一个应用等级的properties文件myApp-application.properties (如下所示):

firstServiceName="newServiceName"

firstServiceStart="newService_start.groovy"

而这种情况下:

  1. 服务名将是 "newServiceName" – 重写了在firstService-service.properties 中的"firstServiceName" 属性
  2. 服务的 icon名依然会是"my1stServiceIcon.jpg"
  3. 服务启动生命周期脚本将会是newService_start.groovy – 重写了在firstService-service.properties 中"firstServiceStart" 属性

在运行时,也可以重写这些属性。在另外一个properties文件中使用 overrides 标识,再通过CLI调用以下命令:  install-application -overrides myOtherPropertiesFile myApp

可以根据需要修改任一属性.

你可能感兴趣的:(Cloudify,recipe)