2013-03-12 78 views
1

标准云代工版本中的许多作业都有模板,可以利用Ruby erb从bosh部署清单中将值插入成为已安装组件一部分的文件中。例如,对于postgresql gateway startup script模板包括线路,如:若你的波什版本清单已在它下面如何访问BOSH部署作业的服务器IP地址?

PG_ADMIN_USER=adminadmin 
PG_ADMIN_GROUP=admin 
PG_ADMIN_PASSWD_HASH= 

PG_ADMIN_USER=<%= properties.postgresql_gateway.admin_user || "pg_admin" %> 
PG_ADMIN_GROUP=<%= properties.postgresql_gateway.admin_group || "admin" %> 
PG_ADMIN_PASSWD_HASH=<%= properties.postgresql_gateway.admin_passwd_hash || "" %> 

它取代将实例如下文件。

properties: 
    postgresql_gateway: 
    check_orphan_interval: 7200 
    token: AAAeAh4BXFBXwLrrWJCpQTfeDnaCn7m 
    supported_versions: ["9.0"] 
    version_aliases: 
     current: "9.0" 
    admin_user: adminadmin 
    admin_group: admin 

有没有办法让我动态插入虚拟机的IP地址?

回答

3

是的。在评估这些模板表达式的上下文中还有另一个对象 - “spec”对象。我将留给你深入了解spec规范对象中的所有内容,但迄今为止我发现的最有用的一点是提供此模板所在的服务器的IP地址的部分实例化。您可以在我们经由BOSH部署样本echo服务去行使看到mods I describe这样一个例子:

exec java \ 
    -jar EchoServer-0.1.0.jar \ 
    -ipaddress <%= spec.networks.default.ip %> \ 
    -port <%= properties.echoserver && properties.echoserver.port || 8080 %> \ 
    >>$LOG_DIR/echoserver.stdout.log \ 
    2>>$LOG_DIR/echoserver.stderr.log 

这是你正在寻找的spec.networks.default.ip值。