Apache Brooklyn 应用程序使用 REST 启动 API

Apache Brooklyn Application Launch using REST API

我们可以通过传递 YAML 文档使用 Brooklyn REST API 启动 VM 吗?

示例 YAML:

name: simple-vm
location:
...
services:
- type: brooklyn.entity.basic.EmptySoftwareProcess
  name: VM
  provisioning.properties:
    user: b-user
    privateKeyFile: ~/.ssh/id_b-user
    osFamily: Ubuntu

privateKeyFile 发生了什么变化?我们可以将其作为论据传递吗?

是的,您可以通过将 YAML 发布到 /v1/applications 来部署蓝图。

但是 privateKeyFile 必须是布鲁克林机器可以访问的 URL,如果它是 运行 远程当然不会访问您机器上的私钥.假设您不想将您的私钥放在 public 可访问 URL :) 您有两个选择。

添加私钥数据配置

配置密钥 privateKeyData 胜过 privateKeyFile 并允许您指定实际的私钥数据。例如:

name: simple-vm
location: ...
services:
- type: brooklyn.entity.basic.EmptySoftwareProcess
  name: VM
  provisioning.properties:
    user: b-user
    privateKeyData: |
      -----BEGIN RSA PRIVATE KEY-----
      MIIEblahblahblahM1gknxGfMNxsIzi6bdrGPtCS4NKrTIIzi6bdrGPtCS4NKrTI
      Izi6bdrGPtCS4NKrTImGqeK0xUFa98WhVS0gHbdX8ebi+RxfOYM5w7NOLlzVzOrE
      ...
      -----END RSA PRIVATE KEY-----
    osFamily: Ubuntu

Brooklyn after 0.7.0-M2-incubating 版本将尝试推断 public 关键数据,但如果您使用 0.7.0-M2 或推断是不工作你也可以提供 publicKeyData.

添加额外的 Public 密钥 URLs

让您的私钥不需要与 Brooklyn 服务器共享的更好机制是让 Brooklyn 生成自己的凭据以连接到机器,但告诉它安装您的 public 密钥另外作为一个 authorized_keys,这样你就可以连接了。配置键 extraSshPublicKeyUrls 需要一个 URL 的字符串列表,所以你所要做的就是把你的 public 在线密钥(这比将您的私钥在线更安全!)。

name: simple-vm
location: ...
services:
- type: brooklyn.entity.basic.EmptySoftwareProcess
  name: VM
  provisioning.properties:
    user: b-user
    extraSshPublicKeyUrls:
    - http://me.com/my/public/key.pub
    osFamily: Ubuntu

0.7.0-M2-incubating之后也引入了此功能,因此您需要获得 recent snapshot build 才能使用此功能。