Ubuntu22.04通过Maas和Juju部署openstack charm

目录

  • 官方文档
  • 材料准备
    • 软件
    • 硬件
  • 模板机和虚拟网络
  • 安装MAAS
    • 官方文档
    • MAAS节点配置
    • 安装MAAS
    • 浏览器登录MAAS进行配置
  • 激活DHCP

官方文档

https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/2023.1/
这是一个通过Maas面板即可部署openstack的方式,是目前最优秀的部署方式,但是系统仅限Ubuntu

材料准备

软件

  1. Ubuntu 22.04 LTS (Jammy) for the Juju client, Juju controller, and all cloud nodes (including containers)
  2. MAAS 3.3.3
  3. Juju 2.9.43
  4. OpenStack 2023.1 (Antelope)

硬件

1 x MAAS system: 8GiB RAM, 2 CPUs, 1 NIC, 1 x 40GiB storage
1 x Juju controller node: 4GiB RAM, 2 CPUs, 1 NIC, 1 x 40GiB storage
4 x cloud nodes: 8GiB RAM, 2 CPUs, 1 NIC, 3 x 80GiB storage
因此主机规划如下

主机名CPU内存系统盘数据盘网卡ip
maas4c8GB100GB/10.0.0.9
juju4c8GB100GB/10.0.0.10
cloud14c8GB100GB100GB*310.0.0.11
cloud24c8GB100GB100GB*310.0.0.12
cloud34c8GB100GB100GB*310.0.0.13
cloud44c8GB100GB100GB*310.0.0.14

旧版本的MAAS面板需要4个cloud节点具备双网卡,一个用于管理面一个用于外网面。自从MAAS (v.2.9.2)以后,只需要一个网口即可,所有流量通过OVS网桥转发,这个由面板自动配置,用户不用管。
本文假设这6个主机是物理机,如果读者使用虚拟机,需要开启CPU hostpassthrough嵌套虚拟化功能。
MAAS主机将作为Openstack集群的DHCP和DNS服务器,所以至关重要。
JUJU主机和cloud主机必须是x86_64的结构
cloud主机的三个数据盘将用于Ceph分布式存储,Ceph至少需要3块盘。

模板机和虚拟网络

本文使用qemu-kvm和virt-manager模拟真实环境
创建一个NAT虚拟网络,10.0.0.0/24,网络名称随意
在这里插入图片描述
模板机开启嵌套虚拟化
在这里插入图片描述

创建一个4核心8GB内存+100GB系统盘的Ubuntu Server22.04虚拟机作为模板机,并且网卡网络选择刚才创建的虚拟网络,cpu打开嵌套虚拟化。系统内网卡默认dhcp模式,后面我们安装Openstack集群时会手动配置成静态IP。

安装MAAS

官方文档

Ubuntu给出的MAAS安装文档:https://maas.io/docs/fresh-installation-of-maas
Openstack给出的MAAS安装文档:https://docs.openstack.org/project-deploy-guide/charm-deployment-guide/2023.1/install-maas.html

MAAS节点配置

克隆模板机,新的虚拟机名称maas
主机配置如下

# 设置主机名
hostnamectl set-hostname maas
bash

# 设置静态ip
cat > /etc/netplan/00-installer-config.yaml << EOF
# This is the network config written by 'subiquity'
network:
  ethernets:
    enp1s0:
      dhcp4: false
      addresses: [10.0.0.9/24]
      routes:
        - to: default
          via: 10.0.0.1
      nameservers:
        addresses: [10.0.0.1]
  version: 2
EOF

# 生效网络
netplan apply

# 编写hosts文件
cat >> /etc/hosts << EOF
10.0.0.9  maas
10.0.0.10 juju
10.0.0.11 cloud1
10.0.0.12 cloud2
10.0.0.13 cloud3
10.0.0.14 cloud4
EOF

# 关闭防火墙
ufw disable

# 生成root公钥
ssh-keygen -t rsa  # 一路回车过去

安装MAAS

在maas服务器上执行以下命令安装maas,本文同时参考了ubuntu和Openstack的maas文档

# 安装maas
sudo snap install maas-test-db
sudo snap install --channel=3.4/edge maas

# 关闭系统自带的时间同步器
systemctl disable --now systemd-timesyncd

# 为maas面板创建postgresql数据库,用于持久化存储数据
sudo apt update -y
sudo apt install -y postgresql

# 创建三个环境变量用于初始化数据库
export MAAS_DBUSER=maas
export MAAS_DBPASS=maas
export MAAS_DBNAME=maas

# 修改主机名变量,否则maas无法连接数据库5432端口
export HOSTNAME=localhost

# 创建数据库和数据库用户
sudo -i -u postgres psql -c "CREATE USER \"$MAAS_DBUSER\" WITH ENCRYPTED PASSWORD '$MAAS_DBPASS'"
sudo -i -u postgres createdb -O "$MAAS_DBUSER" "$MAAS_DBNAME"
echo "host $MAAS_DBNAME $MAAS_DBUSER 0/0 md5" >> /etc/postgresql/14/main/pg_hba.conf

# 初始化maas
sudo maas init region+rack --maas-url http://10.0.0.9:5240/MAAS --database-uri "postgres://$MAAS_DBUSER:$MAAS_DBPASS@$HOSTNAME/$MAAS_DBNAME"

# 初始化成功的返回
MAAS has been set up.             
If you want to configure external authentication or use
MAAS with Canonical RBAC, please run
  sudo maas configauth
To create admins when not using external authentication, run
  sudo maas createadmin
To enable TLS for secured communication, please run
  sudo maas config-tls enable

# 验证maas是否安装成功
sudo maas status

# 配置maas的admin超级管理员用户
sudo maas createadmin --username admin --password 123456 --email 2290906844@qq.com 
# 将admin登录秘钥导出成文件。这个文件必须有!后面部署要用。
sudo maas apikey --username admin > /root/admin-api-key

浏览器登录MAAS进行配置

随后登录 http://10.0.0.9:5240/MAAS,或者在maas主机桌面浏览器中输入127.0.0.1:5240
第一页欢迎页面,配置DNS服务器,这里我们采用阿里云的223.6.6.6,速度比较快。apt镜像源选择中科大源。
http://mirrors.ustc.edu.cn/ubuntu
http://mirrors.ustc.edu.cn/ubuntu-ports
在这里插入图片描述
第二页,选择Ubuntu22.04镜像,点击update selection开始下载,等下载完成后点击continue

在这里插入图片描述
配置成功画面
在这里插入图片描述
到了秘钥页面,下拉框选择Upload,然后将主机/root/.ssh/id_rsa.pub文件内容粘贴到文本框中。这样面板admin用户可免密登录主机root。
在这里插入图片描述
主界面
在这里插入图片描述
到此,MAAS面板安装成功。

激活DHCP

在安装后面5个节点之前,需要让MAAS面板有一个DHCP服务,5台节点的IP由这个DHCP分配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/223138.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

python HTML文件标题解析问题的挑战

引言 在网络爬虫中&#xff0c;HTML文件标题解析扮演着至关重要的角色。正确地解析HTML文件标题可以帮助爬虫准确地获取所需信息&#xff0c;但是在实际操作中&#xff0c;我们常常会面临一些挑战和问题。本文将探讨在Scrapy中解析HTML文件标题时可能遇到的问题&#xff0c;并…

Spring Boot基础

文章目录 一、Spring Boot1. Spring的缺点2. Spring Boot 改变了什么3. Spring Boot项目搭建4. 热部署5. 依赖管理6. 代码生成器7. 日志8. 日期转换9. 接口文档10. 打包部署11. 自动装配 一、Spring Boot 1. Spring的缺点 在Spring Boot出现以前&#xff0c;使用Spring框架的…

Windows系统的Chkdsk(磁盘修复工具),好用快速的磁盘医生

一款非常具有专业性、权威的工具,可以全面的检测电脑的硬盘坏道,标记出来并且进行及时的修复,它还可以对移动硬盘等进行检测修复。chkdsk还可以支持目前流行的各种系统文件格式,例如:FAT、FAT32、NTFS等。还可以针对坏道磁盘错误进行深度优化,保证电脑磁盘的安全和完整性…

这是聊天阿!this (酸萝卜别吃)doge

1——on——1 chat 服务端 package work; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.util.ArrayList; import java.util.List;public class UDPServer {private static final int PORT 9876;private static List<ClientInf…

新生报到管理系统

【摘要】 随着我国教育水平的提高和新生数量的增加&#xff0c;合理妥善高效的进行新生接待&#xff0c;不但成为各个学校亟待解决的问题&#xff0c;对于广大新生来说&#xff0c;也是最先让他们了解学校形象的一个好机会。但是许多学校没有采用通过高效的系统来操作解决新生…

吉利护航,宣称比友商“更懂车”,魅族造车的底气与底色

继小米、华为后&#xff0c;又一家手机厂商宣布跨界造车。 在近日举办的2023魅族秋季无界生态发布会上&#xff0c;星纪魅族集团&#xff08;下称“魅族”&#xff09;董事长兼CEO沈子瑜宣布&#xff0c;魅族正式进入汽车市场&#xff0c;将在2024年第一季度启动“DreamCar共创…

pyqt5+QWebEngineView+pdfjs+win32print实现pdf文件的预览、打印

一、pdf显示逻辑 import sys from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgetsPDFJS = file:///pdfjs-1.9.426-dist/web/viewer.html # PDFJS = file:///usr/share/pdf.js/web/viewer.html PDF = file:///D:/Code/report.pdfclass Window(QtWebEngineWidgets.QWebEng…

大话数据结构-查找-散列表查找(哈希表)

注&#xff1a;本文同步发布于稀土掘金。 8 散列表查找&#xff08;哈希表&#xff09; 8.1 定义 散列技术是在记录的存储位置和它的关键字之间建立一个确定的对应关系f&#xff0c;使得每个关键字key对应一个存储位置f(key)。查找时&#xff0c;根据这个确定的对应关系找到给…

Python Collections库的高级功能详解

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Python的collections库提供了一系列有用的数据类型&#xff0c;扩展了内建的数据类型&#xff0c;为开发者提供了更多高级功能。本文将深入探讨collections库的一些高级功能&#xff0c;通过详细的示例代码演示&…

北森2023半年报洞察:中国HCM SaaS市场的未来,只能是北森

作者 | 曾响铃 文 | 响铃说 中国的HCM SaaS市场处在了一个不尴不尬的状态&#xff0c;尽管前景广阔&#xff0c;但是需求却迟迟未能爆发&#xff0c;整体行业卡在了一个明显的瓶颈期。 其中&#xff0c;又以北森的处境最为典型。 根据IDC发布的《IDC中国人力资本管理&#…

EDW国际数据管理最新趋势(二)|信息供应链与数据

最近Data Fabric、Data Mesh、DataOps等话题非常火。其实&#xff0c;信息供应链谈的也是同样的东西&#xff0c;那就是如何将数据治理与数据集成整合在一起的解决方案。 下图虽然简单但涵盖了非常大的信息量。将4A架构进行了拆解&#xff0c;应用架构与技术架构主要是支撑业务…

AOP记录操作日志

创建数据库表 -- 操作日志 create table operate_log (id int unsigned primary key auto_increment commentid,operate_user int unsigned comment 操作人员Id,operate_time datetime comment 操作时间,class_name varchar(100)comment 操作类,method_name varchar(100)comme…

IDEA 修改encoding

IDEA 修改encoding 现象&#xff1a;idea展示乱码 打开Settings>>File Encodings&#xff0c;修改为UTF-8即可

Kubernetes(K8s)_17_Kubernetes扩展

Kubernetes&#xff08;K8s&#xff09;_17_Kubernetes扩展 Kubernetes扩展CustomResuorceDefinition自定义API ServerOperator Kubernetes扩展 Kubernetes扩展: 不同角度实现对Kubernetes功能的增加/增强 内部组件: API Server、CRD、Operator、授权和准入控制kubelet: CRI、…

Linux环境变量与命令行参数

Linux环境变量与命令行参数 一.命令行参数1.语法2.应用1:简易计算器 二.环境变量1.环境变量的概念2.环境变量的作用3.进一步理解环境变量的作用4.常见环境变量5.导出环境变量(添加环境变量)6.环境变量的特性7.另一种获取环境变量的方式8.小功能:用于身份验证的代码9.补充:第三种…

Elasticsearch:什么是机器学习?

机器学习定义 机器学习 (ML) 是人工智能 (AI) 的一个分支&#xff0c;专注于使用数据和算法来模仿人类的学习方式&#xff0c;并随着时间的推移逐渐提高准确性。 计算机科学家和人工智能创新者 Arthur Samuel 在 20 世纪 50 年代首次将其定义为 “赋予计算机无需明确编程即可学…

C 语言实现TCP 通信,以及地址复用

服务端 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <unistd.h> #include <arpa/inet.h>int main() {//监听套接字文件描述符int listenFd -1;//连接套接字的文件描述符int connFd -1;//服务器的地址结构st…

html实现好看的个人博客留言板源码

文章目录 1.设计来源1.1 博客主界面1.2 常用源码1.3 我的文章1.4 留言板1.5 联系我 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者&#xff1a;xcLeigh 文章地址&#xff1a;https://blog.csdn.net/weixin_43151418/article/details/134837482 html实现好看的个人博客留言…

(C语言)判定同数异形体

同数异形体&#xff1a;有相同的数字包括数字个数&#xff0c;不同排列形成的正整数。 例如&#xff1a;12334和33214均由1个1,1个2,2个3,1个4组成&#xff0c;故互为同数异形体&#xff0c;而1234和3221就不是。 #include<stdio.h> bool Isomorphism(int num1,int num…

js二维数组实现纵向求和

需求&#xff1a;横向纵向都可以求和&#xff0c;剩余分数为100减去纵向之和 var arr [{id: 张丹,rowInfo: [{ realScore: 12 },{ realScore: 34 },{ realScore: 0 },{ realScore: 0 },{ realScore: 0 },],},{id: 丽丽,rowInfo: [{ realScore: 0 },{ realScore: 0 },{ realSc…