3

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

示例 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 会发生什么?我们可以将它作为参数传递吗?

4

1 回答 1

2

是的,您可以通过将 YAML 发布到/v1/applications.

但是,privateKeyFile它必须是布鲁克林机器可以访问的 URL,如果它远程运行,它当然不会访问您机器上的私钥。假设您不想将私钥放在可公开访问的 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 版本0.7.0-M2-incubating将尝试推断公钥数据,但如果您正在使用0.7.0-M2或推断不起作用,您也可以提供publicKeyData.

添加额外的公钥 URL

一个更好的机制是让你的私钥不需要与布鲁克林服务器共享,让布鲁克林生成自己的凭据来连接到机器,但告诉它安装你的公钥作为authorized_keys附加,这样你就可以连接。配置密钥extraSshPublicKeyUrls采用 URL 字符串列表,因此您所要做的就是将您的公钥放到网上(这比将您的私钥放到网上更安全!)。

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引入的,因此您需要获取最近的快照版本才能使用此功能。

于 2015-03-27T16:54:24.620 回答