如何为BOSH部署的作业访问服务器的IP地址?

时间:2013-03-12 00:26:06

标签: cloudfoundry

标准云代工厂发布的许多工作都有模板,利用Ruby erb将bosh部署清单中的值插入到已成为已安装组件一部分的文件中。例如,postgresql gateway startup script的模板包含以下行:

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 || "" %>

替换将实例化文件,如下所示:

PG_ADMIN_USER=adminadmin
PG_ADMIN_GROUP=admin
PG_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地址吗?

1 个答案:

答案 0 :(得分:3)

是。在上下文中还有另一个可用于评估这些模板表达式的对象 - “spec”对象。我将由你来深入研究并查看spec对象中的所有内容,但是我发现的最有用的一个部分是提供服务器IP地址的部分。实例化。您可以在我们通过BOSH部署示例回显服务的练习中的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值。