目录:
第一节 多节点OpenStack Charms 部署指南0.0.1.dev223–1--OpenStack Charms 部署指南
第二节 多节点OpenStack Charms 部署指南0.0.1.dev223–2-安装MAAS
第三节 多节点OpenStack Charms 部署指南0.0.1.dev223–3-安装Juju
第四节 多节点OpenStack Charms 部署指南0.0.1.dev223–4-安装openstack
第五节 多节点OpenStack Charms 部署指南0.0.1.dev223–5--使bundle安装openstack
第六节 多节点OpenStack Charms 部署指南0.0.1.dev223–6--配置vault和设置数字证书生命周期
第七节 多节点OpenStack Charms 部署指南0.0.1.dev223–7--juju 离线部署bundle
第八节 多节点OpenStack Charms 部署指南0.0.1.dev223–8--配置 OpenStack
附录 t 多节点OpenStack Charms 部署指南0.0.1.dev223–附录T–OpenStack 高可用性
第九节 多节点OpenStack Charms 部署指南0.0.1.dev223–9--网络拓扑
第十节 多节点OpenStack Charms 部署指南0.0.1.dev223–10–OpenStack 高可用基础架构实际
第十一节 多节点OpenStack Charms 部署指南0.0.1.dev223–11–访问Juju仪表板
第十二节 多节点OpenStack Charms 部署指南0.0.1.dev223–12–OpenStack 配置openstack失败后处理
第十三节 多节点OpenStack Charms 部署指南0.0.1.dev223–13–OpenStack配置高可用后无法登陆openstack dashboard
第十四节 多节点OpenStack Charms 部署指南0.0.1.dev223–14–ssh端口转发解决IDC机房国际线路不良问题
第十五节 多节点OpenStack Charms 部署指南0.0.1.dev299–15–OpenStack 实例高可用
第十六节 多节点OpenStack Charms 部署指南0.0.1.dev299–16–OpenStack基础架构高可用The easyrsa resource is missing. .
第十七节 多节点OpenStack Charms 部署指南0.0.1.dev303–17–修改实例数量等quota上限
第十八节 多节点OpenStack Charms 部署指南0.0.1.dev303–18–backup备份
第十九节 多节点OpenStack Charms 部署指南0.0.1.dev303–19–juju log
第二十节 多节点OpenStack Charms 部署指南0.0.1.dev303–20–控制器高可用性
第二十一节 多节点OpenStack Charms 部署指南0.0.1.dev303–21–控制器备份和还原
第二十二节 多节点OpenStack Charms 部署指南0.0.1.dev223–22-- Resource: res_masakari_haproxy not running
第二十三节 多节点OpenStack Charms 部署指南0.0.1.dev223–23-登录openstack-dashboad,SSLError(SSLCertVerificationError
第二十四节 多节点OpenStack Charms 部署指南0.0.1.dev223–24-Resource: res_masakari_f8b6bde_vip not running
第二十五节 多节点OpenStack Charms 部署指南0.0.1.dev223–25–rsyslog 日志服务器构建实际
第二十六节 多节点OpenStack Charms 部署指南0.0.1.dev223–26–跨model 建立关系构建rsyslog 日志服务器构建实际
第二十七节 多节点OpenStack Charms 部署指南0.0.1.dev223–27–Charm Hook
第二十八节 多节点OpenStack Charms 部署指南0.0.1.dev223–28–Command run
第三十节 多节点OpenStack Charms 部署指南0.0.1.–30–参考体系结构—Dell EMC硬件上的Canonical Charmed OpenStack(Ussuri)
第三十一节 多节点OpenStack Charms 部署指南0.0.1.–31–vm hosting-1
第三十二节 多节点OpenStack Charms 部署指南0.0.1.–32–vm hosting-2-VM host networking (snap/2.9/UI)
第三十三节 多节点OpenStack Charms 部署指南0.0.1.–33–vm hosting-3-Adding a VM host (snap/2.9/UI)
第三十四节 多节点OpenStack Charms 部署指南0.0.1.–34–vm hosting-4-VM host存储池和创建和删除vm (snap/2.9/UI)
第三十五节 多节点OpenStack Charms 部署指南0.0.1.–35–Command export-bundle备份opensack并重新部署openstack
第三十六节 多节点openstack charms 部署指南0.0.1-36-graylog实际-1
第三十七节 多节点openstack charms 部署指南0.0.1-37-graylog实际-2
第三十八节 多节点openstack charms 部署指南0.0.1-38-graylog实际-3
第三十九节 多节点openstack charms 部署指南0.0.1-39-graylog-4-filebeat
第四十节 多节点openstack charms 部署指南0.0.1-40-prometheus2
从bundle中安装 OpenStack
Juju Charm bundle 是许多 Charm 部署的封装,包括所需的所有相关联的关系和配置(请参阅 Juju 文档中的 Charm bundle)。因此,可以从捆绑包中安装 OpenStack。
小贴士
安装 OpenStack页面展示了如何使用 Juju 单独部署、配置和关联应用程序。建议使用这种安装方法从更高的角度知道 OpenStack 是如何组合在一起的。它还提供了获得使用 Juju 的经验的机会,这反过来将为您部署后的云管理做好准备。
这里展示的 bundle 提供了一个最小的 OpenStack 云,并假设 MAAS 被用作 Juju 的后备云。由于本地环境中的未知因素(通常与硬件相关) ,在部署之前很可能需要对bundle进行修改。在这里的 Charm Store 条目 openstack-base 中详细描述了 bundle 及其部署。
一旦确认了bundle的配置,OpenStack 就可以部署了:
juju deploy /path/to/bundle/file
完成安装所需的时间将取决于底层 MAAS 节点的硬件功能。一旦完成,您应该继续配置 OpenStack,如果还没有完成。
最后,一旦云功能得到验证,请参阅 OpenStack 管理员指南获得长期指导。
以下是实际安装过程:
基本的 OpenStack 云
Openstack Base #70
这个包在 Ubuntu 20.04 LTS (Focal)上部署基本的 OpenStack Cloud (Ussuri,Ceph Octopus) ,提供 Dashboard、 Compute、 Network、 Block Storage、 Object Storage、 Identity 和 Image 服务。参见: Stable bundle。
这个示例包的设计目的是使用 Juju 2.x 和 MAAS (Metal-as-a-Service,Metal-as-a-Service)在裸机上运行; 在使用这个包之前,您需要设置至少3个物理服务器的 MAAS 部署。
bundle中的某些配置选项可能需要在部署之前进行调整,以适应特定的硬件设置。例如,网络设备名称和块设备名称可以不同,密码应该是你的。
例如,bundle.yaml 文件中有一个类似的部分。第三个“ column”是要设置的值。有些服务器可能没有 eno2,它们可能有 eth2或其他网络设备名。这需要在部署之前进行调整。同样的原理也适用于 osd 设备。第三列是用于 cephosd 的设备的白名单。在部署之前通过编辑 bundle.yaml 进行相应调整。
variables:
openstack-origin: &openstack-origin distro
data-port: &data-port br-ex:eno2
worker-multiplier: &worker-multiplier 0.25
osd-devices: &osd-devices /dev/sdb /dev/vdb
服务器应该有:
- 至少8gb 的物理内存
- 足够的 CPU 内核来满足您的容量需求
- 两个磁盘(由/dev/sda 和/dev/sdb 标识) ; 第一个磁盘由MAAS 用于 OS 安装,第二个用于 Ceph 存储
- Eno1和 eno2上的两个有线网络端口(见下文)
服务器应该有两个物理网络端口连接; 第一个端口用于云中服务之间的通用通信,第二个端口用于“公共”网络流量,这些流量来自在云中运行的实例(北/南流量)。
3 个节点以供Nova Compute 和 Ceph, 带着 RabbitMQ, MySQL, Keystone, Glance, Neutron, OVN, Nova Cloud 控制器, Ceph RADOS 网关, 在 LXC 容器里的Cinder和Horizon这些组件使用。
所有物理服务器(不包括 LXC 容器)也将安装 NTP 并配置为保持时间同步。
部署
通过在没有定义网络空间的 MAAS 云上引导 Juju 控制器,可以使用以下命令部署基本的非 ha 云:
juju deploy bundle.yaml
当 MAAS 集群中存在网络空间时,需要澄清和定义charm应用程序将部署到的网络空间。这可以通过一个overlay bundle来实现。提供了一个overlay yaml 文件的示例,它很可能需要在部署之前进行编辑,以表示现有 MAAS 集群中的预期网络空间。用法示例:
juju deploy bundle.yaml --overlay openstack-base-spaces-overlay.yaml
签发证书
此版本使用 Vault 向支持的服务提供证书。这允许终端用户和云服务之间的安全通信,以及确保云服务之间的通信安全。在配置完成和云使用之前,vault需要解封并配备 CA 证书。如果不这样做,部署后将出现以下消息(处于 juju 状态) :
'certificates' missing, 'ovsdb' incomplete
详细信息请参阅 OpenStack Charms 部署指南中的 Vault 和 Certificate 生命周期管理部分。在 OpenStack 高可用性指南中提供了示例步骤。
扩展
Nova Compute 和 Ceph 服务的设计是水平可扩展的。
水平扩展Nova Compute:
juju add-unit nova-compute # Add one more unit
juju add-unit -n5 nova-compute # Add 5 more units
水平扩展Ceph:
juju add-unit ceph-osd # Add one more unit
juju add-unit -n50 ceph-osd # add 50 more units
注意: Ceph 可以和 Nova Compute 一起调整,方法是使用 – to 选项添加unit:
juju add-unit --to <machine-id-of-compute-service> ceph-osd
注意: 这个 bundle 中的其他服务可以结合 hacluster
charm进行扩展,以生成可伸缩的、高可用性的服务——这些服务将包含在不同的 bundle 中。
确保它正常工作
为了确保您的云正常运行,请下载这个包,然后运行以下部分。
所有命令都在扩展的 bundle 中执行。
安装 OpenStack 客户端工具
为了配置和使用你的云,你需要安装适当的客户端工具:
sudo snap install openstackclients
为部署颁发证书
此版本使用 vault 向支持的服务提供证书。这允许终端用户和云服务之间的安全通信,以及确保云服务之间的通信安全。在配置完成和云使用之前,vault需要解封并配备 CA 证书。
详情请参阅 OpenStack Charms 部署指南中附录中的的Vault和证书生命周期管理。
访问云
检查你是否可以通过命令行访问你的云:
source openrc
openstack catalog list
你应该得到在云中注册的所有服务的完整列表,包括身份、计算、映像和网络。
配置映像
为了在你的云上运行实例,你需要上传一个映像来启动实例:
curl https://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img | \
openstack image create --public --container-format=bare \
--disk-format=qcow2 focal
注:国内可以使用清华镜像源以加速:
curl https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/focal/current/focal-server-cloudimg-amd64.img | \
openstack image create --public --container-format=bare \
--disk-format=qcow2 focal
其他不同架构的映像可以从 Ubuntu 云映像中获得。确保为不同cpu 体系结构使用适当的映像。
注:
国内清华源为:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-cloud-images/focal/current/
注意: 对于 ARM 64位(arm64)客户端,您还需要配置映像以 UEFI 模式启动:
curl http://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-arm64.img | \
openstack image create --public --container-format=bare \
--disk-format=qcow2 --property hw_firmware_type=uefi focal
配置网络
为了进行快速测试,我们将设置一个“外部”网络和共享路由器(“ provider-router”) ,所有租户都可以使用它来公开访问实例:
例如(对于私有云) :
openstack network create --external --provider-network-type flat \
--provider-physical-network physnet1 ext_net
openstack subnet create --subnet-range 192.168.1.0/24 --no-dhcp \
--gateway 192.168.1.152 --network ext_net \
--allocation-pool start=192.168.1.190,end=192.168.1.230 ext
你需要调整所有服务器上的 eno2连接到的网络配置参数; 在公共云部署中,这些端口将连接到互联网的一个公共可寻址部分。
我们还需要一个管理员用户的内部网络,实例实际上是连接到:
openstack network create internal
openstack subnet create --network internal \
--subnet-range 172.16.16.0/24 \
--dns-nameserver 8.8.8.8 \
internal_subnet
openstack router create provider-router
openstack router set --external-gateway ext_net provider-router
openstack router add subnet provider-router internal_subnet
Neutron 提供了广泛的配置选项,详情请参阅 OpenStack Neutron 文档。
配置一种风味flavor
从 OpenStack Newton 版本开始,安装时不再创建默认风味flavor。因此,在引导一个实例之前,您需要至少创建一个机器类型:
openstack flavor create --ram 2048 --disk 20 --ephemeral 20 m1.small
引导实例
首先生成一个 SSH 密钥对,以便在启动实例后可以访问它们:
mkdir -p ~/.ssh
touch ~/.ssh/id_rsa_cloud
chmod 600 ~/.ssh/id_rsa_cloud
openstack keypair create mykey > ~/.ssh/id_rsa_cloud
注意: 你也可以上传一个现有的公钥到云端,而不是生成一个新的:
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
现在你可以在你的云上启动一个实例:
openstack server create --image focal --flavor m1.small --key-name mykey \
--network internal focal-test
附加一个卷
首先,在cinder中创建一个10G 的卷:
openstack volume create --size=10 <name-of-volume>
然后将其附加到我们刚刚引导的实例:
openstack server add volume focal-test <name-of-volume>
一旦您登录到实例,就可以访问附加的卷(见下文)。它将需要格式化和挂载!
为了访问你刚刚在云端引导的实例,你需要给这个实例分配一个浮动的 IP 地址:
FIP=$(openstack floating ip create -f value -c floating_ip_address ext_net)
openstack server add floating ip focal-test $FIP
然后允许通过 SSH (和 ping)访问——您只需执行以下步骤一次:
PROJECT_ID=$(openstack project list -f value -c ID \
--domain admin_domain)
SECGRP_ID=$(openstack security group list --project $PROJECT_ID \
| awk '/default/{print$2}')
openstack security group rule create $SECGRP_ID \
--protocol icmp --ingress --ethertype IPv4
openstack security group rule create $SECGRP_ID \
--protocol icmp --ingress --ethertype IPv6
openstack security group rule create $SECGRP_ID \
--protocol tcp --ingress --ethertype IPv4 --dst-port 22
openstack security group rule create $SECGRP_ID \
--protocol tcp --ingress --ethertype IPv6 --dst-port 22
运行这些命令后,你应该能够访问实例:
ssh ubuntu@$FIP
登录到 OpenStack Dashboard
首先确定 OpenStack Dashboard 的 IP 地址:
juju status openstack-dashboard
在你的网页浏览器中输入以下网址: https://dashboard-ip/horizon/
打印您的证书:
source openrc
env | grep OS_
接下来呢?
在 OpenStack 云上配置和管理服务是复杂的; 请参阅 OpenStack 管理指南,了解如何根据需求配置 OpenStack 云的完整参考。
我配置时使用的命令如下:
juju deploy cs:bundle/openstack-base-70
大概输出看起来如下:
Located bundle "cs:bundle/openstack-base-70"
Resolving charm: cs:ceph-mon-49
Resolving charm: cs:ceph-osd-304
Resolving charm: cs:ceph-radosgw-290
Resolving charm: cs:cinder-304
Resolving charm: cs:cinder-ceph-257
Resolving charm: cs:mysql-router-3
Resolving charm: cs:mysql-router-3
Resolving charm: cs:glance-298
Resolving charm: cs:mysql-router-3
Resolving charm: cs:keystone-317
Resolving charm: cs:mysql-router-3
Resolving charm: cs:mysql-innodb-cluster-1
Resolving charm: cs:neutron-api-287
Resolving charm: cs:neutron-api-plugin-ovn-1
Resolving charm: cs:mysql-router-3
Resolving charm: cs:nova-cloud-controller-346
Resolving charm: cs:nova-compute-319
Resolving charm: cs:mysql-router-3
Resolving charm: cs:ntp-41
Resolving charm: cs:openstack-dashboard-305
Resolving charm: cs:ovn-central-1
Resolving charm: cs:ovn-chassis-3
Resolving charm: cs:placement-12
Resolving charm: cs:mysql-router-3
Resolving charm: cs:rabbitmq-server-104
Resolving charm: cs:vault-40
Resolving charm: cs:mysql-router-3
Executing changes:
- upload charm cs:ceph-mon-49 for series focal
- deploy application ceph-mon on focal using cs:ceph-mon-49
- set annotations for ceph-mon
- upload charm cs:ceph-osd-304 for series focal
- deploy application ceph-osd on focal using cs:ceph-osd-304
- set annotations for ceph-osd
- upload charm cs:ceph-radosgw-290 for series focal
- deploy application ceph-radosgw on focal using cs:ceph-radosgw-290
- set annotations for ceph-radosgw
- upload charm cs:cinder-304 for series focal
- deploy application cinder on focal using cs:cinder-304
added resource policyd-override
- set annotations for cinder
- upload charm cs:cinder-ceph-257 for series focal
- deploy application cinder-ceph on focal using cs:cinder-ceph-257
- set annotations for cinder-ceph
- upload charm cs:mysql-router-3 for series focal
- deploy application cinder-mysql-router on focal using cs:mysql-router-3
- set annotations for cinder-mysql-router
- deploy application dashboard-mysql-router on focal using cs:mysql-router-3
- set annotations for dashboard-mysql-router
- upload charm cs:glance-298 for series focal
- deploy application glance on focal using cs:glance-298
added resource policyd-override
- set annotations for glance
- deploy application glance-mysql-router on focal using cs:mysql-router-3
- set annotations for glance-mysql-router
- upload charm cs:keystone-317 for series focal
- deploy application keystone on focal using cs:keystone-317
added resource policyd-override
- set annotations for keystone
- deploy application keystone-mysql-router on focal using cs:mysql-router-3
- set annotations for keystone-mysql-router
- upload charm cs:mysql-innodb-cluster-1 for series focal
- deploy application mysql-innodb-cluster on focal using cs:mysql-innodb-cluster-1
added resource mysql-shell
- set annotations for mysql-innodb-cluster
- upload charm cs:neutron-api-287 for series focal
- deploy application neutron-api on focal using cs:neutron-api-287
added resource policyd-override
- set annotations for neutron-api
- upload charm cs:neutron-api-plugin-ovn-1 for series focal
- deploy application neutron-api-plugin-ovn on focal using cs:neutron-api-plugin-ovn-1
- set annotations for neutron-api-plugin-ovn
- deploy application neutron-mysql-router on focal using cs:mysql-router-3
- set annotations for neutron-mysql-router
- upload charm cs:nova-cloud-controller-346 for series focal
- deploy application nova-cloud-controller on focal using cs:nova-cloud-controller-346
added resource policyd-override
- set annotations for nova-cloud-controller
- upload charm cs:nova-compute-319 for series focal
- deploy application nova-compute on focal using cs:nova-compute-319
- set annotations for nova-compute
- deploy application nova-mysql-router on focal using cs:mysql-router-3
- set annotations for nova-mysql-router
- upload charm cs:ntp-41 for series focal
- deploy application ntp on focal using cs:ntp-41
- set annotations for ntp
- upload charm cs:openstack-dashboard-305 for series focal
- deploy application openstack-dashboard on focal using cs:openstack-dashboard-305
added resource policyd-override
added resource theme
- set annotations for openstack-dashboard
- upload charm cs:ovn-central-1 for series focal
- deploy application ovn-central on focal using cs:ovn-central-1
- set annotations for ovn-central
- upload charm cs:ovn-chassis-3 for series focal
- deploy application ovn-chassis on focal using cs:ovn-chassis-3
- set annotations for ovn-chassis
- upload charm cs:placement-12 for series focal
- deploy application placement on focal using cs:placement-12
- set annotations for placement
- deploy application placement-mysql-router on focal using cs:mysql-router-3
- set annotations for placement-mysql-router
- upload charm cs:rabbitmq-server-104 for series focal
- deploy application rabbitmq-server on focal using cs:rabbitmq-server-104
- set annotations for rabbitmq-server
- upload charm cs:vault-40 for series focal
- deploy application vault on focal using cs:vault-40
added resource core
added resource vault
- set annotations for vault
- deploy application vault-mysql-router on focal using cs:mysql-router-3
- set annotations for vault-mysql-router
- add new machine 0
- add new machine 1
- add new machine 2
- add relation nova-compute:amqp - rabbitmq-server:amqp
- add relation nova-cloud-controller:identity-service - keystone:identity-service
- add relation glance:identity-service - keystone:identity-service
- add relation neutron-api:identity-service - keystone:identity-service
- add relation neutron-api:amqp - rabbitmq-server:amqp
- add relation glance:amqp - rabbitmq-server:amqp
- add relation nova-cloud-controller:image-service - glance:image-service
- add relation nova-compute:image-service - glance:image-service
- add relation nova-cloud-controller:cloud-compute - nova-compute:cloud-compute
- add relation nova-cloud-controller:amqp - rabbitmq-server:amqp
- add relation openstack-dashboard:identity-service - keystone:identity-service
- add relation nova-cloud-controller:neutron-api - neutron-api:neutron-api
- add relation cinder:image-service - glance:image-service
- add relation cinder:amqp - rabbitmq-server:amqp
- add relation cinder:identity-service - keystone:identity-service
- add relation cinder:cinder-volume-service - nova-cloud-controller:cinder-volume-service
- add relation cinder-ceph:storage-backend - cinder:storage-backend
- add relation ceph-mon:client - nova-compute:ceph
- add relation nova-compute:ceph-access - cinder-ceph:ceph-access
- add relation ceph-mon:client - cinder-ceph:ceph
- add relation ceph-mon:client - glance:ceph
- add relation ceph-osd:mon - ceph-mon:osd
- add relation ntp:juju-info - nova-compute:juju-info
- add relation ceph-radosgw:mon - ceph-mon:radosgw
- add relation ceph-radosgw:identity-service - keystone:identity-service
- add relation placement - keystone
- add relation placement - nova-cloud-controller
- add relation keystone:shared-db - keystone-mysql-router:shared-db
- add relation cinder:shared-db - cinder-mysql-router:shared-db
- add relation glance:shared-db - glance-mysql-router:shared-db
- add relation nova-cloud-controller:shared-db - nova-mysql-router:shared-db
- add relation neutron-api:shared-db - neutron-mysql-router:shared-db
- add relation openstack-dashboard:shared-db - dashboard-mysql-router:shared-db
- add relation placement:shared-db - placement-mysql-router:shared-db
- add relation vault:shared-db - vault-mysql-router:shared-db
- add relation keystone-mysql-router:db-router - mysql-innodb-cluster:db-router
- add relation cinder-mysql-router:db-router - mysql-innodb-cluster:db-router
- add relation nova-mysql-router:db-router - mysql-innodb-cluster:db-router
- add relation glance-mysql-router:db-router - mysql-innodb-cluster:db-router
- add relation neutron-mysql-router:db-router - mysql-innodb-cluster:db-router
- add relation dashboard-mysql-router:db-router - mysql-innodb-cluster:db-router
- add relation placement-mysql-router:db-router - mysql-innodb-cluster:db-router
- add relation vault-mysql-router:db-router - mysql-innodb-cluster:db-router
- add relation neutron-api-plugin-ovn:neutron-plugin - neutron-api:neutron-plugin-api-subordinate
- add relation ovn-central:certificates - vault:certificates
- add relation ovn-central:ovsdb-cms - neutron-api-plugin-ovn:ovsdb-cms
- add relation neutron-api:certificates - vault:certificates
- add relation ovn-chassis:nova-compute - nova-compute:neutron-plugin
- add relation ovn-chassis:certificates - vault:certificates
- add relation ovn-chassis:ovsdb - ovn-central:ovsdb
- add relation vault:certificates - neutron-api-plugin-ovn:certificates
- add relation vault:certificates - cinder:certificates
- add relation vault:certificates - glance:certificates
- add relation vault:certificates - keystone:certificates
- add relation vault:certificates - nova-cloud-controller:certificates
- add relation vault:certificates - openstack-dashboard:certificates
- add relation vault:certificates - placement:certificates
- add relation vault:certificates - ceph-radosgw:certificates
- add unit ceph-osd/0 to new machine 0
- add unit ceph-osd/1 to new machine 1
- add unit ceph-osd/2 to new machine 2
- add unit nova-compute/0 to new machine 0
- add unit nova-compute/1 to new machine 1
- add unit nova-compute/2 to new machine 2
- add lxd container 0/lxd/0 on new machine 0
- add lxd container 1/lxd/0 on new machine 1
- add lxd container 2/lxd/0 on new machine 2
- add lxd container 0/lxd/1 on new machine 0
- add lxd container 1/lxd/1 on new machine 1
- add lxd container 2/lxd/1 on new machine 2
- add lxd container 0/lxd/2 on new machine 0
- add lxd container 0/lxd/3 on new machine 0
- add lxd container 1/lxd/2 on new machine 1
- add lxd container 2/lxd/2 on new machine 2
- add lxd container 1/lxd/3 on new machine 1
- add lxd container 0/lxd/4 on new machine 0
- add lxd container 1/lxd/4 on new machine 1
- add lxd container 0/lxd/5 on new machine 0
- add lxd container 1/lxd/5 on new machine 1
- add lxd container 2/lxd/3 on new machine 2
- add lxd container 2/lxd/4 on new machine 2
- add lxd container 2/lxd/5 on new machine 2
- add lxd container 0/lxd/6 on new machine 0
- add unit ceph-mon/0 to 0/lxd/0
- add unit ceph-mon/1 to 1/lxd/0
- add unit ceph-mon/2 to 2/lxd/0
- add unit ceph-radosgw/0 to 0/lxd/1
- add unit cinder/0 to 1/lxd/1
- add unit glance/0 to 2/lxd/1
- add unit keystone/0 to 0/lxd/2
- add unit mysql-innodb-cluster/0 to 0/lxd/3
- add unit mysql-innodb-cluster/1 to 1/lxd/2
- add unit mysql-innodb-cluster/2 to 2/lxd/2
- add unit neutron-api/0 to 1/lxd/3
- add unit nova-cloud-controller/0 to 0/lxd/4
- add unit openstack-dashboard/0 to 1/lxd/4
- add unit ovn-central/0 to 0/lxd/5
- add unit ovn-central/1 to 1/lxd/5
- add unit ovn-central/2 to 2/lxd/3
- add unit placement/0 to 2/lxd/4
- add unit rabbitmq-server/0 to 2/lxd/5
- add unit vault/0 to 0/lxd/6
Deploy of bundle completed.