OpenStack Yoga安装使用kolla-ansible

news2024/12/26 22:20:34

基本上是按照官网文档快速入门进行安装,不过还有很多地方需要换源。重点在换源这块。如果说你的网关有魔法,那就不用看这篇文章了,直接复制官网命令安装。

 支持的操作系统

注意:不再支持 CentOS 7 作为主机操作系统。Train 版本同时支持 CentOS 7 和 8,并提供了迁移路径。有关迁移到 CentOS 8 的信息,请参阅Kolla Ansible Train 文档。

yoga版本支持以下操作系统:

  • CentOS Stream 8

  • Debian Bullseye (11)

  • openEuler 20.03 LTS SP2

  • RHEL 8 (deprecated)

  • Rocky Linux 8

  • Ubuntu Focal (20.04)

我这里使用的是Ubuntu 22.04 LTS(mini安装)

下面开始安装

1. 安装系统依赖

1.1. 更新软件包索引

sudo apt update

1.2. 安装python依赖

sudo apt install git python3-dev libffi-dev gcc libssl-dev

2. 安装python-venv虚拟环境依赖

2.1 安装python3-venv

sudo apt install python3-venv

2.2 创建虚拟环境并激活它

mkdir /path && mkdir /path/to # 也可以自定路径
python3 -m venv /path/to/venv
source /path/to/venv/bin/activate

2.3 确保安装了最新版本的pip

python -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple --upgrade pip

 2.4 pypi换源

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

2.5 安装Ansible

pip install 'ansible>=4,<6'

3. 安装Kolla-Ansible

3.1 kolla

# pip install git+https://opendev.org/openstack/kolla-ansible@stable/yoga
# 上面是原版命令,建议使用jihulab.com克隆一份
pip install git+https://jihulab.com/james-curtis/kolla-ansible@stable/yoga

3.2 创建文件夹/etc/kolla

sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla

3.3 复制 globals.yml 和 passwords.yml 到 /etc/kolla

# 如果你使用了自定义路径,记得替换/path/to
cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla

3.4 复制清单文件

cp /path/to/venv/share/kolla-ansible/ansible/inventory/* .

4. 安装Ansible Galaxy依赖

4.1 换源

找到 /path/to/venv/share/kolla-ansible/requirements.yml 

内容如下

---
collections:
  - name: https://opendev.org/openstack/ansible-collection-kolla
    type: git
    version: stable/yoga

修改这个git仓库地址,如果镜像拉不下,建议去拉github的OpenStack镜像

修改成如下

---
collections:
  - name: https://jihulab.com/james-curtis/ansible-collection-kolla
    type: git
    version: stable/yoga

4.2 安装依赖

kolla-ansible install-deps

4.3 配置Ansible

mkdir /etc/ansible 
echo "[defaults]
host_key_checking=False
pipelining=True
forks=100" > /etc/ansible/ansible.cfg

5. 准备初始化配置

我这里为方便后续拓展,所以使用了 multinode 清单(不过也是单节点部署)。你也可以跳过此步骤,然后使用 all-in-one 清单。

5.1 修改配置文件

这里仅仅展示 [baremetal:children] 节点之前的配置文件,切勿照搬!!!

# These initial groups are the only groups required to be modified. The
# additional groups are for more control of the environment.
[control]
# These hostname must be resolvable from your deployment host
control01   ansible_user=root ansible_password=1 ansible_become=true

# The above can also be specified as follows:
# control[01:03]     ansible_user=kolla

# The network nodes are where your l3-agent and loadbalancers will run
# This can be the same as a host in the control group
# [network]
# network01
# network02

# when you specify group_name:children, it will use contents of group specified.
[network:children]
control


# [compute]
# compute01
[compute:children]
control

[monitoring]
control01   ansible_user=root ansible_password=1 ansible_become=true
# monitoring01

# When compute nodes and control nodes use different interfaces,
# you need to comment out "api_interface" and other interfaces from the globals.yml
# and specify like below:
#compute01 neutron_external_interface=eth0 api_interface=em1 storage_interface=em1 tunnel_interface=em1

# [storage]
# storage01
[storage:children]
control

[deployment]
localhost       ansible_connection=local

# 下接[baremetal:children]

5.2 修改hosts

如果使用 all-in-one 清单,这一步也可以跳过

注意替换成自己的机器的内网ip

echo "10.10.1.81 control01" >> /etc/hosts

5.3 检查清单配置是否正确

ansible -i multinode all -m ping

哦豁报错了

venv) root@ubuntu:~# ansible -i multinode all -m ping
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
control01 | FAILED! => {
    "msg": "to use the 'ssh' connection type with passwords or pkcs11_provider, you must install the sshpass program"
}
localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

按照提示说明需要安装 sshpass 

apt search sshpass -y

啊哦又报错了。我们还是改用 ssh密钥 登录吧

(venv) root@ubuntu:~# ansible -i multinode all -m ping
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
control01 | FAILED! => {
    "msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this.  Please add this host's fingerprint to your known_hosts file to manage this host."
}

5.4 配置ssh密钥对

ssh-keygen

一路回车

ssh-copy-id 10.10.1.81
# 注意替换自己的内网ip

输入yes同意指纹,然后输入密码。就可以了

# 看下如下提示就是成功了
root@10.10.1.81's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh '10.10.1.81'"
and check to make sure that only the key(s) you wanted were added.

5.5 禁用ansible主机指纹检查 

 运行之前请确保 /etc/ansible/ansible.cfg 没有这个文件,或者这是一个空文件。否则需要手动添加 host_key_checking = false

mkdir /etc/ansible
echo "[defaults]
host_key_checking = false" > /etc/ansible/ansible.cfg

5.5 再次检查清单配置是否正确

ansible -i multinode all -m ping

返回下面结果就是成功

(venv) root@ubuntu:~# ansible -i multinode all -m ping
[WARNING]: Invalid characters were found in group names but not replaced, use -vvvv to see details
localhost | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}
control01 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python3"
    },
    "changed": false,
    "ping": "pong"
}

6. 生成密码

kolla-genpwd

7. 配置globals.yml

先安装一下vim

apt install vim -y

先不要进入编辑模式,输入下面,显示行号

:set number

7.1 编辑镜像类型

再搜索kolla_base_distro,在非编辑模式下输入如下进行搜索

/kolla_base_distro

输入回车,光标回到文本中,此时光标应该在31行。输入i进入编辑模式

修改后,带上行号,应该显示如下。编辑完成后按Esc退出编辑模式

 31 kolla_base_distro: "ubuntu"

7.2 编辑网络接口

这里,vim的基本使用不在赘述

搜索第一个网口接口,并修改为对应配置(可以通过 ip a 查看接口名字)

 设置的第一个接口是“ Network_interface”。这是多个管理类型网络的默认接口。

network_interface: "eth0"

搜索并设置第二个接口

所需的第二个接口专用于Neutron外部(或公共)网络,可以是vlan或flat,这取决于网络的创建方式。此接口应处于活动状态,没有IP地址。否则,实例将无法访问外部网络。

 这里说人话,就是第二个接口需要给他一个空闲的网口

neutron_external_interface: "eth1"

搜索并设置浮动ip

接下来,我们需要为管理流量提供浮动IP。该IP将由keepalive管理,以提供高可用性,并且应设置为在连接到我们网络接口的管理网络中不使用的地址。

这里说人话就是,浮动ip不要和network_interface中的地址冲突(一般是DHCP),比如说network_interface所在DHCP范围是10.1.1.100-10.1.1.200。那么浮动ip就不建议在这个范围内,而应该选择如10.1.1.201

kolla_internal_vip_address: "10.1.0.250"

编辑完成,按下Esc,再输入

:wq

保存退出

8. 部署

8.1 docker quay.io换源

sed -i.bak 's/#docker_registry:/docker_registry: quay.nju.edu.cn/g' /etc/kolla/globals.yml

8.2 引导服务器

kolla-ansible -i ./multinode bootstrap-servers

8.3 对主机进行部署前检查

kolla-ansible -i ./multinode prechecks

8.4 最后进行实际的 OpenStack 部署

kolla-ansible -i ./multinode deploy

当本脚本完成时,OpenStack 应该启动、运行并正常运行!

PLAY RECAP ******************************************************************************************************************************************************************
control01                  : ok=308  changed=218  unreachable=0    failed=0    skipped=169  rescued=0    ignored=1   
localhost                  : ok=4    changed=0    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0   

访问浮动ip地址就是前台页面,如果显示证书错误,那意思就是密码错误

账号为admin

查看密码:

cat /etc/kolla/passwords.yml |grep keystone_admin_password

9. 使用 OpenStack 

9.1 安装 OpenStack CLI 客户端

官方命令(网络能通的可以试试)

pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/yoga

如果文件获取不了建议,打开这个链接,之后会跳转到
https://opendev.org/openstack/requirements/raw/branch/stable/yoga/upper-constraints.txt
再去github的OpenStack镜像,即 github.com/openstack/requirements
然后克隆这个仓库到jihulab.com

记得选择对应的分支

 ,接着找到对应的文件

 

打开原始文件,得到下面链接

https://jihulab.com/james-curtis/requirements/-/raw/stable/yoga/upper-constraints.txt

替换官方命令,并执行

pip install python-openstackclient -c https://jihulab.com/james-curtis/requirements/-/raw/stable/yoga/upper-constraints.txt

9.2 OpenStack 需要一个 openrc 文件

其中设置了管理员用户的凭据。要生成此文件

kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh

.(点)+(空格)+可执行文件 == source+(空格)+可执行文件

接下来就可以使用OpenStack CLI了


至此OpenStack安装完成


后续:

  • OpenStack使用Skyline Dashboard面板替换默认Horizon面板
  • OpenStack增加节点或者减少节点,横向拓展节点
  • ProxmoxVE+Ceph+OpenStack HCI超融合平台搭建,配置Bcache加速Ceph SDS

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 的 IDEA 神级插件!

安装插件 1. Codota 代码智能提示插件 只要打出首字母就能联想出一整条语句&#xff0c;这也太智能了&#xff0c;还显示了每条语句使用频率。原因是它学习了我的项目代码&#xff0c;总结出了我的代码偏好。 如果让它再加上机器学习&#xff0c;人工智能写代码的时代还会远吗…

tkinter绘制组件(39)——滑动控件

tkinter绘制组件&#xff08;39&#xff09;——滑动控件引言布局函数结构响应按钮框架响应按钮的表示文本响应移动完整函数代码效果测试代码最终效果github项目pip下载结语引言 swipecontrol直译滑动控件&#xff0c;参考WinUI的SwipeControl。 虽然&#xff0c;这个控件在平…

凡人修C传——专栏从凡人到成仙系列目录

这里先感谢博主THUNDER王给我提出来的一个创作建议&#xff0c;让我有了创作的灵感来创建这一篇博客以及凡人修C传这一个系列的文章。 本文最主要的目的就是给大家一个凡人修C传的一个目录&#xff0c;让大家更加容易学到自己想学的地方。 &#x1f4dd;【个人主页】&#xff1…

js实现滑动进度条

效果图 完整代码 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta http-equiv"X-UA-Compatible" content"IEedge" /><meta name"viewport" content"widthdevic…

TOOM舆情分析和报告工具,大数据决策免费舆情监控辅助工具?

大数据舆情工具是一种利用大数据技术进行舆情监控、分析、评估和预测的工具&#xff0c;以提高企业舆情应对能力。舆情监控工具可以帮助企业提高舆情应对能力&#xff0c;提升企业形象&#xff0c;以更好地处理各种舆情问题&#xff0c;TOOM舆情分析和报告工具&#xff0c;大数…

使用Python+Tensorflow的CNN技术快速识别验证码

近年来&#xff0c;机器学习变得愈加火热&#xff0c;中国选手柯洁与AlphaGo的人机大战更是引起热议。目前&#xff0c;在图像识别和视觉分析研究中&#xff0c;卷积神经网络&#xff08;CNN&#xff09;技术的使用越来越多。Tensorflow 是由 Google 团队开发的神经网络模块&am…

三级管集电极开路电路工作原理详细分析

今天给大家分享的是&#xff1a;集电极开路电路、集电极开路晶体管电路、集电极开路工作原理、集电极开路TTL、集电极开路输出接线图、集电极开路优缺点。 在数字芯片设计、微控制器应用和运算放大器中&#xff0c;集电极开始输出通常用于驱动继电器等高负载或用于连接其他电路…

从双钻模型看产品规划

作为产品经理&#xff0c;我们在进行产品规划的时候&#xff0c;往往是采用“探索→执行”的思维进行规划&#xff0c;然而这类方法虽然有效&#xff0c;但不全面&#xff0c;也不一定能够科学地指引我们去进行合理的产品规划。那么&#xff0c;有什么方式或模型能够让我们合理…

笔记_html

目录什么是 HTML?HTML元素(定义)骨架HTML元素a标签语法使用1-超链接使用2-锚点定位使用3-文件下载使用4-阻止a标签的默认事件HTML5新增元素HTML5新增元素属性什么是 HTML? HTML是由一系列元素组成的超文本标记语言。 tips: html标签不区分大小写&#xff01; HTML元素(定义)…

多核异构处理器对共享外设和资源的调配方法-飞凌嵌入式

来源&#xff1a;飞凌嵌入式官网www.forlinx.com在多核异构CPU中&#xff0c;多个内核就如同多个大脑&#xff0c;而外设和内存等资源就如同手足&#xff0c;那么多个大脑该如何控制手足才能保证它们正常有序地运行呢&#xff1f;以NXP i.MX8M Plus处理器的A核和M核为例&#x…

为HTML网页添加喜庆气氛的诸多方法

为HTML网页添加喜庆气氛的诸多方法 节假日&#xff0c;如春节&#xff0c;为网页&#xff08;或网站的主网页&#xff09;营造欢乐祥和氛围的手段&#xff0c;还是比较多的&#xff0c;下面介绍。 先给出未加喜庆气氛修饰的网页源码如下&#xff0c;特意做的简单&#xff0c;意…

Docker - 10. 本地镜像发布到阿里云

将本地镜像发布到阿里云&#xff0c;具体步骤如下&#xff1a; 1. 注册并登录阿里云控制台&#xff1a;阿里云登录平台 2. 进入容器镜像服务&#xff1a;阿里云 - 容器镜像服务 3. 创建个人实例&#xff0c;未创建前如下图1&#xff0c;创建后见下图2 4. 打开并创建命名空间…

XSS Labs (one)

Web Security Academy>>Cross-site scripting>>Contexts burpsuite官网XSS靶场地址 超全的fuzz payload Lab: Reflected XSS into HTML context with nothing encoded <script>alert(1)</script>弹出成功&#xff0c;最简单的反射型XSS靶场。 Lab: S…

2023牛客寒假算法基础集训营5 小沙の不懂(思维)

题意&#xff1a;这题目一开始看了半天啊&#xff0c;而且坑点很多&#xff08;qwq&#xff09;&#xff0c;大概意思就是给你两个字符串a,b&#xff08;可能存在前导0&#xff09;&#xff0c;然后给你任意个长度为10的从0到9的排列&#xff08;比如1234567890 &#xff0c;09…

攻防世界:crypt(RC4)

1、下载PE文件&#xff0c;控制台程序2、main函数大致分析&#xff0c;请看下面的注释int __cdecl main(int argc, const char **argv, const char **envp) {unsigned int str_length; // eaxunsigned int myflag_length; // eaxvoid *v5; // raxvoid *v7; // raxint i; // [rs…

软测(概念) · 开发模型 · 软件的生命周期 · 瀑布模型 · 螺线模型 · 增量模型 · 迭代模型 · 敏捷模型 · scrum · 软件测试模型之 V 模型 W 模型

一、开发模型的由来二、软件的生命周期三、瀑布模型&#xff08;Waterfall Model&#xff09;四、螺线模型&#xff08;Spiral Model&#xff09;五、增量模型&#xff08;Incremental Model&#xff09;六、迭代模型&#xff08;Rational UnifiedProcess&#xff09;七、敏捷模…

SQL Server 2014 数据库误删数据的恢复处理

一、序言 作为程序开发人员或 DBA&#xff0c;经常会接触到数据库&#xff08;以 SQL Server 2014 数据库为例&#xff09;的增、删、改查操作。执行 delete 语句时不小心误删数据表的记录情况&#xff0c;而数据库之前又没有任何备份。 SQL Server 数据库自身的数据库还原数…

使用蚁群优化 (ACO) 解决背包问题(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 背包问题&#xff08;Knapsack problem&#xff09;是一种组合优化的NP完全&#xff08;NP-Complete&#xff0c;NPC&#xff0…

【My Electronic Notes系列——组合逻辑电路】

目录 序言&#xff1a; &#x1f3c6;&#x1f3c6;人生在世&#xff0c;成功并非易事&#xff0c;他需要破茧而出的决心&#xff0c;他需要永不放弃的信念&#xff0c;他需要水滴石穿的坚持&#xff0c;他需要自强不息的勇气&#xff0c;他需要无畏无惧的凛然。要想成功&…

【页面设计】03.JavaScript

一、什么是JavaScript&#xff1f; 一种编程语言&#xff0c;可以在网页上实现复杂的功能、交互等。是一种解释型语言&#xff0c;也是一种面向对象的语言。 ps&#xff1a;解释型语言&#xff0c;是在运行的时候将程序翻译成机器语言。解释型语言的程序不需要在运行前编译&a…