2013-03-12 68 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值。