1

標準的なクラウド ファウンドリー リリースのジョブの多くには、Ruby erb を利用して bosh デプロイ マニフェストの値を、インストールされたコンポーネントの一部となるファイルに挿入するテンプレートがあります。たとえば、postgresql ゲートウェイ起動スクリプトのテンプレートには、次のような行が含まれています。

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=

bosh リリース マニフェストに次のものが含まれている場合。

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

VM の IP アドレスを動的に挿入する方法はありますか?

4

1 に答える 1

3

はい。これらのテンプレート式が評価されるコンテキストで利用可能な別のオブジェクトがあります - 「スペック」オブジェクトです。spec オブジェクトで何が利用できるかを掘り下げて確認するのはあなたに任せますが、これまでに見つけた最も有用なビットの 1 つは、このテンプレートが使用されているサーバーの IP アドレスを提供する部分でした。でインスタンス化されます。この例は、BOSH を介してサンプルのエコー サービスをデプロイする演習で説明した mod で確認できます。

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 の値です。

于 2013-03-12T00:26:05.543 に答える