Juju 是一个支持多种云服务商(如 AWS、Azure、Google Cloud Platform、MAAS 和 LXD)的部署工具。本文将重点介绍如何使用 Juju 和 LXD 构建 OpenStack 测试环境。

安装 LXD

安装 LXD 非常简单,只需运行以下命令:

1
sudo apt-install lxd

如果找不到 lxd 包,请运行以下命令添加 PPA(Personal Package Archive),然后重新执行安装命令。

1
2
3
sudo apt-add-repository ppa:ubuntu-lxc/stable
sudo apt update
sudo apt dist-upgrade

配置 LXD

运行以下命令,按步骤配置 lxd 设置:

1
2
3
4
5
6
7
8
$ sudo lxd init
Do you want to configure a new storage pool (yes/no) [default=yes]?
Name of the storage backend to use (dir or zfs) [default=dir]:
Would you like LXD to be available over the network (yes/no) [default=no]?
Do you want to configure the LXD bridge (yes/no) [default=yes]?
Warning: Stopping lxd.service, but it can still be activated by:
  lxd.socket
LXD has been successfully configured.

安装 juju

运行以下命令安装 juju:

1
2
$ sudo apt install juju
...(省略:安装日志)...

安装完成后,我们可以使用 LXD 启动一个新的控制器。这意味着 juju 会为管理服务创建一个新的 LXD 容器。

可以用以下命令创建名为 juju-controller 的控制器:

1
2
$ juju bootstrap localhost juju-controller
...(省略:引导日志)...

此时可以看到有一个新的 LXD 容器正在运行。

1
2
$ lxc list
...(省略:容器列表)...

运行 juju status 可以看到当前还没有任何服务在运行。

1
2
$ juju status
...(省略:状态输出)...

部署 Minecraft 服务器

现在我们可以部署 Minecraft 服务器了! 运行以下命令告诉 juju 你要部署它。命令会立即返回,但这并不意味着服务已经准备好。请用 juju status 查看进度。

1
2
$ juju status
...(省略:Minecraft 服务器部署进度)...

从上面可以看到 juju 正在创建服务器。用 lxc list 命令也可以看到为 Minecraft 服务器创建的新容器。

1
2
$ lxc list
...(省略:容器列表)...

过一会儿,部署完成,服务变为 active。

1
2
$ juju status
...(省略:服务变为 active 的输出)...

现在你可以启动 Minecraft 客户端,连接 10.229.139.124 的 25565 端口,畅玩你的全新 Minecraft 服务器!

如果想删除它,只需运行以下命令。 与 Minecraft 服务器相关的所有服务和服务器都会被移除。

1
juju destroy-service minecraft

你也可以销毁 juju 控制器以及它创建的所有服务/服务器。 最简单的一键销毁方法如下:

1
2
$ juju destroy-controller juju-controller --destroy-all-models
...(省略:销毁日志)...

可以确认所有容器都已被移除。

1
2
$ lxc list
...(省略:空列表)...

部署 OpenStack

你可以用 Juju 部署更复杂的环境,比如 OpenStack。

1
2
$ juju deploy cs:bundle/openstack-base-55
...(省略:OpenStack bundle 部署日志)...