Juju 2.0 和 LXD 远程提供程序

Juju 2.0 和 LXD 远程提供程序

是否可以在新版本的 Juju(2.0-rc3-xenial-amd64)中添加远程 LXD 提供程序?

我到目前为止已经尝试过的:

  • 手动云

(如果我使用它可以工作juju deploy mysql --to lxd:<Machine's ID>但我无法部署捆绑包)

  • 更改了默认的 LXC 远程提供程序:

远程启用 https 并设置密码

lxc remote add <name> <provider's IP address>

lxc remote set-default <name>

lxc launch工作正常,但 Juju 仍然使用本地提供商)

  • 尝试使用配置 yaml 文件添加新的 LXD 云,就像下面的一样 clouds: mylxd: type: lxd auth-types: [access-key, userpass] regions: deployment: endpoint: https://<Remote IP Address>:8443/1.0

(但我无法使用这个特定的云配置进行引导)

你能帮帮我吗?谢谢!

答案1

Juju 2.0 附带的 lxd 提供程序将仅在主机上创建容器。

该团队已经讨论过使用远程 lxd 机器,但目前,lxd 提供程序是一个开发人员工具,仅在主机上创建容器。

答案2

使用 juju >= 2.1 即可实现

SSH 进入远程服务器(例如 192.168.10.2)并配置 lxd 以接受传入连接并设置密码。

(192.168.10.2)$ lxc config set core.https_address "[::]"
(192.168.10.2)$ lxc config set core.trust_password some-secret-string

现在在将运行 juju 命令的机器(又名 juju 客户端)中添加远程 lxd 守护进程,这样做是为了轻松获取服务器的证书。

(juju-client)$ lxc remote add 192.168.10.2 \
    --accept-certificate \
    --password=some-secret-string

创建一个 yaml 配置文件,juju 将使用它来添加云,它应该是这样的。

# file: some-remote.yaml
clouds:
  some-remote:
    type: lxd
    auth-types: [interactive, certificate]
    regions:
      some-remote:
        endpoint: 192.168.10.2

将云定义添加到 juju:

(juju-client)$ juju add-cloud some-remote some-remote.yaml

创建 credentials.yaml 文件:

# file: credentials.yaml
some-remote:
  some-remote:
    auth-type: certificate
    client-cert: |
      -----BEGIN CERTIFICATE-----
      ...
      INSERT THE CONTENT OF ~/.config/lxc/client.crt
      ...
      -----END CERTIFICATE-----
    client-key: |
      -----BEGIN RSA PRIVATE KEY-----
      ...
      INSERT THE CONTENT OF ~/.config/lxc/client.key
      ...
      -----END RSA PRIVATE KEY-----
    server-cert: |
      -----BEGIN CERTIFICATE-----
      ...
      INSERT THE CONTENT OF ~/.config/lxc/client.crt
      ...
      -----END CERTIFICATE-----

将凭证添加到 juju:

(juju-client)$ juju add-credential some-remote -f credentials.yaml

验证云是否已正确添加:

(juju-client)$ juju clouds
Cloud           Regions  Default          Type            Description
[...]
localhost             1  localhost        lxd             LXD Container Hypervisor
some-remote           1  some-remote      lxd             LXD Container Hypervisor
[...]

使用添加的云提供商引导新的控制器

(juju-client)$ juju bootstrap some-remote

引导完成后,验证控制器在远程 lxd 守护进程中是否正确旋转:

(juju-client)$ lxc list 192.168.10.2:
+---------------+---------+--------------------------------+------+------------+-----------+
|     NAME      |  STATE  |              IPV4              | IPV6 |    TYPE    | SNAPSHOTS |
+---------------+---------+--------------------------------+------+------------+-----------+
| juju-ec8b3d-0 | RUNNING | 192.168.10.42 (eth0)           |      | PERSISTENT | 0         |
+---------------+---------+--------------------------------+------+------------+-----------+
(juju-client)$ juju status -m controller
Model       Controller   Cloud/Region             Version
controller  snowspeeder  snowspeeder/snowspeeder  2.1.2

App  Version  Status  Scale  Charm  Store  Rev  OS  Notes

Unit  Workload  Agent  Machine  Public address  Ports  Message

Machine  State    DNS            Inst id        Series  AZ  Message
0        started  192.168.10.42  juju-ec8b3d-0  xenial      Running

来源:http://tty.cl/add-remote-lxd-server-as-a-cloud-in-juju-2x.html

免责声明:我是所引用文章的作者

相关内容