标准云代工厂发布的许多工作都有模板,利用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地址吗?
答案 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值。