Kolla-ansible部署openStack

部署的版本是openStack2024.1

1. 简介

kolla是openstack官方开发的一套基于docker部署openstack的工具,旨在为openstack提供生产级别的、开箱即用的交付能力。

kolla的基本思想是一切皆容器,将所有服务基于docker运行,并且保证一个容器只跑一个服务。

kolla分为如下两个项目:

  • kolla:制作部署openstack所需的docker镜像
  • kolla-ansible:基于ansible+docker部署openstack

使用kolla部署openstack的优势:

  • 基于ansible和docker,部署快速稳定
  • 一个容器一个服务,可以将openstack服务控制到很小的粒度
  • 可以以组件为单位进行升级和回滚,例如可通过kolla-ansible -i /path/to/inventory -t nova upgrade 指令完成nova的快速升级
  • 目前 kolla 项目在社区内的热度相对较高,社区支持更好

2. 环境准备

主机名 网卡名/类型 IP地址
openstack01 ens33 NAT
ens34 NAT
ens33: 192.168.200.130
ens34: IP留空
openstack02 ens33 NAT
ens34 NAT
ens33: 192.168.200.133
ens34 :IP留空
openstack03 ens33 NAT
ens34 NAT
ens33: 192.168.200.134
ens34: IP留空

需要说明的是,在这个环境当中配置一个控制节点,两个计算节点

3. 部署

3.1 基础环境配置

3.1.1 配置主机名,所有节点操作,这里以openstack01为例

[root@localhost ~]# hostnamectl set-hostname openstack01
[root@localhost ~]# bash

3.1.2 添加hosts

# 在部署节点上添加所有节点的hosts
192.168.200.130 openstack01
192.168.200.133 openstack02
192.168.200.134 openstack03 # 非部署节点只需要添加自己的主机名解析即可,如下为openstack02的配置
192.168.10.10 openstack02

3.1.3 配置免密登录

在部署节点上配置对所有节点的免密访问,只需要在openstack01上做

[root@openstack01 ~]# ssh-keygen
[root@openstack01 ~]# ssh-copy-id openstack01
[root@openstack01 ~]# ssh-copy-id openstack02
[root@openstack01 ~]# ssh-copy-id openstack03

3.1.4 关闭防火墙以及selinux

所有节点都做

[root@openstack01 ~]# systemctl disable --now firewalld
[root@openstack01 ~]# setenforce 0
[root@openstack01 ~]# sed -i 's/SELINUX=/SELINUX=disabled/g' /etc/selinux/config

3.1.5 设置yum源

我使用的是欧拉,这一步可以不做,其他的linux需要安装epel源

[root@openstack01 ~]# yum install epel-release -y

3.1.6 安装docker

因为kolla-ansible是将各个组件部署在容器内的,所以需要安装docker

[root@openstack01 ~]# dnf install -y yum-utils device-mapper-persistent-data lvm2 -y
[root@openstack01 ~]# wget -O /etc/yum.repos.d/docker-ce.repo https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo
[root@openstack01 ~]# yum install docker-ce -y

如果是欧拉系统,这里就直接yum install docker -y就可以了,欧拉的源自带了docker

3.2 配置kolla-ansible

3.2.1 安装相关依赖

需要在每个节点上执行

[root@openstack01 ~]# dnf install git python3-devel libffi-devel gcc openssl-devel python3-libselinux -y

3.2.2 部署kolla-ansible

启用python虚拟环境

[root@openstack01 ~]# python3 -m venv .venv/kolla
[root@openstack01 ~]# source ~/.venv/kolla/bin/activate

后续的操作在这个虚拟环境中执行

安装kolla-ansible

(kolla) [root@openstack01 ~]# pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
(kolla) [root@openstack01 ~]# pip3 install -U pip
(kolla) [root@openstack01 ~]# pip3 install 'ansible-core>=2.15,<2.16.99'
(kolla) [root@openstack01 ~]# pip3 install kolla-ansible # 安装galaxy依赖
(kolla) [root@openstack01 ~]# kolla-ansible install-deps

下载kolla-ansible的源码

(kolla) [root@openstack01 ~]# git clone https://github.com/openstack/kolla-ansible.git
(kolla) [root@openstack01 ~]# cd kolla-ansible
(kolla) [root@openstack01 kolla-ansible]# git checkout stable/2024.1

生成配置文件

(kolla) [root@openstack01 kolla-ansible]# mkdir /etc/kolla
(kolla) [root@openstack01 kolla-ansible]# cd
(kolla) [root@openstack01 ~]# cp kolla-ansible/etc/kolla/* /etc/kolla/
(kolla) [root@openstack01 ~]# cp kolla-ansible/ansible/inventory/multinode /etc/kolla

修改inventory文件

(kolla) [root@openstack01 ~]# vim /etc/kolla/multinode
[control]
openstack01
openstack02
openstack03 [network]
openstack01
openstack02
openstack03 [compute]
openstack01
openstack02
openstack03 [monitoring]
openstack01 [storage]
openstack01
openstack02
openstack03

只改动这些,其他的配置不动就可以了

修改globals.yml文件

(kolla) [root@openstack01 ~]# vim /etc/kolla/globals.yml
node_config: "/etc/kolla" # 自行添加
kolla_base_distro: "rocky"
openstack_release: "2024.01"
node_custom_config: "{{ node_config }}/config"
kolla_internal_vip_address: "192.168.200.150"
docker_registry: quay.nju.edu.cn
network_interface: "ens33"
neutron_external_interface: "ens34"
neutron_plugin_agent: "openvswitch"
enable_openstack_core: "yes"
enable_hacluster: "no"
enable_haproxy: "yes"
enable_keepalived: "{{ enable_haproxy | bool }}"
enable_cinder: "no"
enable_cinder_backend_nfs: "no"
cinder_volume_group: "cinder-volumes"
nova_compute_virt_type: "kvm"
  • kolla_base_distro:openstack的组件镜像使用的基础镜像
  • openstack_release:openstack版本
  • node_custome_config: 自定义配置文件的路径
  • kolla_internal_vip_address:在controller多机部署的场景,多个controller会开启haproxy+keepalived实现负载均衡,这里需要配置为keepalived的vip, 如果是单controller的场景,这里的地址为controller节点的ip地址,此时需要设置enable_haproxy选项为no
  • docker_registry:默认情况下,openstack的镜像会从quay.io官方仓库拉取,速度很慢,这里使用的是国内的镜像站
  • docker_namespace:指定镜像仓库中用于存储这些镜像的namespace
  • network_interface:管理网络的接口
  • neutron_external_interface:neutron使用的外部网络的接口, 此接口不应该配置ip地址
  • neutron_plugin_agent:指定neutron使用的网络插件
  • enable_openstack_core:是否部署openstack的核心服务,此项应为yes
  • enable_hacluster:是否开启虚拟机的故障迁移(当虚拟机所在物理机出现故障时,自动迁移虚拟机)
  • enable_haproxy:如果controller有多个节点,这里应该设置为yes,同时kolla_internal_vip_address应该设置为vip地址
  • enble_cinder:是否开启cinder
  • enable_cinder_backend_nfs:指定cinder后端存储为nfs,如果开启了cinder,则必须指定一种backend,支持lvm、nfs、ceph等
  • cinder_volume_group:此项只在cinder为yes且cinder的存储驱动设置为lvm时有效
  • nova_compute_virt_type:指定nova compute所使用的虚拟化类型

接下来填充密码文件

(kolla) [root@openstack01 ~]# kolla-genpwd

3.2.3 配置所有节点的python依赖

kolla-ansible部署openstack,在所有openstack节点上需要部署相应的python依赖包。这些依赖包可以从部署节点上获得:

(kolla) [root@openstack01 ~]# pip3 freeze > /tmp/requirements.txt

从/tmp/requirements.txt中删除如下2行(其他节点不需要安装ansible和kolla-ansible):

ansible-core==2.15.12
kolla-ansible==18.0.0

将以上2行删除,然后将这个文件复制到其他节点来安装

(kolla) [root@openstack01 ~]# scp /tmp/requirements.txt openstack02:/tmp
(kolla) [root@openstack01 ~]# scp /tmp/requirements.txt openstack03:/tmp

需要说明的是,这些包需要在所有节点安装,包括控制节点。且不可以安装在python虚拟环境中:

# 退出虚拟环境
(kolla) [root@openstack01 ~]# deactivate
[root@openstack01 ~]# pip3 install -r /tmp/requirements.txt
[root@openstack02 ~]# pip3 install -r /tmp/requirements.txt
[root@openstack03 ~]# pip3 install -r /tmp/requirements.txt

3.2.4 执行kolla-ansible的部署

(kolla) [root@openstack01 ~]# cd /etc/kolla
# 安装依赖
(kolla) [root@openstack01 kolla]# kolla-ansible -i ./multinode bootstrap-servers
# 前置检查
(kolla) [root@openstack01 kolla]# kolla-ansible -i ./multinode prechecks
# 拉取镜像
(kolla) [root@openstack01 kolla]# kolla-ansible -i ./multinode pull
# 执行部署
(kolla) [root@openstack01 kolla]# kolla-ansible -i ./multinode deploy
# 部署完后执行
(kolla) [root@openstack01 kolla]# kolla-ansible -i ./multinode post-deploy

如果在执行拉取镜像的时候非常慢,或者直接卡住了,可以将其打断,自行拉取,因为它使用ansible拉取镜像我么看不见进度条,我们可以自行编写脚本来拉取

(kolla) [root@openstack01 kolla]# vim images_pull.sh
docker pull quay.nju.edu.cn/openstack.kolla/neutron-server:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/nova-compute:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/neutron-dhcp-agent:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/neutron-metadata-agent:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/neutron-openvswitch-agent:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/neutron-l3-agent:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/heat-api:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/heat-engine:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/heat-api-cfn:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/nova-novncproxy:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/nova-conductor:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/nova-ssh:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/nova-api:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/keystone-fernet:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/nova-scheduler:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/keystone:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/keystone-ssh:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/horizon:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/placement-api:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/kolla-toolbox:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/openvswitch-db-server:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/openvswitch-vswitchd:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/mariadb-server:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/mariadb-clustercheck:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/nova-libvirt:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/cron:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/keepalived:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/memcached:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/haproxy:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/fluentd:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/glance-api:2024.1-rocky-9
docker pull quay.nju.edu.cn/openstack.kolla/rabbitmq:2024.1-rocky-9

然后赋予这个文件执行权限,再执行,他就会开始拉取镜像,这个我们是可以看的见进度的

(kolla) [root@openstack01 kolla]# chmod +x image_pull.sh
(kolla) [root@openstack01 kolla]# ./image_pull.sh

等到他拉取完成之后再去执行部署,部署完成之后执行kolla-ansible -i ./multinode post-deploy这个命令生成密码文件

(kolla) [root@openstack01 ~]# kolla-ansible -i ./multinode post-deploy

3. 登录dashboard

登录之前我们得先知道密码,而密码文件就在/etc/kolla/clouds.yaml这里面会有全部的密码

admin-openec.sh这里面会有admin的密码,我们查看这个文件就可以

[root@openstack01 kolla]# cat /etc/kolla/admin-openrc.sh
# Ansible managed # Clear any old environment that may conflict.
for key in $( set | awk '{FS="="} /^OS_/ {print $1}' ); do unset $key ; done
export OS_PROJECT_DOMAIN_NAME='Default'
export OS_USER_DOMAIN_NAME='Default'
export OS_PROJECT_NAME='admin'
export OS_TENANT_NAME='admin'
export OS_USERNAME='admin'
export OS_PASSWORD='jjLYD6R82pEDu4xlbUMRkynJX1Xv6wpfpqSxeRWl'
export OS_AUTH_URL='http://192.168.200.150:5000'
export OS_INTERFACE='internal'
export OS_ENDPOINT_TYPE='internalURL'
export OS_IDENTITY_API_VERSION='3'
export OS_REGION_NAME='RegionOne'
export OS_AUTH_PLUGIN='password'

jjLYD6R82pEDu4xlbUMRkynJX1Xv6wpfpqSxeRWl 这个就是我们的密码了,现在去浏览器登录

在浏览器我们输入VIP就可以直接进入这个页面,输入用户名admin和刚刚查看的密码就可以登录

Kolla-ansible部署openStack的更多相关文章

  1. 使用Ansible部署openstack平台

    使用Ansible部署openstack平台 本周没啥博客水了,就放个云计算的作业上来吧(偷个懒) 案例描述 1.了解高可用OpenStack平台架构 2.了解Ansible部署工具的使用 3.使用A ...

  2. kolla-ansible-----快速部署openstack

    基本环境 操作系统:CentOS Linux release 7.5.1804 (Core) 内核版本:3.10.0-862.el7.x86_64 docker版本:1.13.1 1.禁用宿主机的 L ...

  3. OpenStack(四)——使用Kolla部署OpenStack多节点云

    (1).实验环境 主机名 IP地址 角色 内存 网卡 CPU 磁盘 OpenStack-con 192.168.128.110 controller(控制) 8G 桥接网卡ens32和ens33 4核 ...

  4. kolla部署openstack多节点高可用并对接ceph后端存储(17)

    部署节点执行: 安装基础包和docker yum install python-devel libffi-devel gcc openssl-devel git python-pip -y 升级一下 ...

  5. 在 Kubernetes 上部署 OpenStack 是什么体验

    红蓝出 CP,OpenStack 和 Kubernetes 在一起会怎样? 背景 从去年开始就想深入地学习 Kubernetes,首先想到是在 OpenStack 上能比较轻松地玩转,所以去 尝试了 ...

  6. 001.Ansible部署RHCS存储集群

    一 前期准备 1.1 前置条件 至少有三个不同的主机运行monitor (MON)节点: 至少三个直接存储(非外部SAN硬件)的OSD节点主: 至少两个不同的manager (MGR)节点: 如果使用 ...

  7. k8s ansible部署部署文档

    一:基础系统准备 ubuntu 1804----> root密码:123456 主要操作:   1.更改网卡名称为eth0: # vim /etc/default/grub GRUB_CMDLI ...

  8. 部署 OpenStack VirtualBox

    VirtualBox 中部署 OpenStack 大家新年好,CloudMan 今天给大家带来一件新年礼物. 一直以来大家都反馈 OpenStack 学习有两大障碍:1. 实验环境难搭2. 体系复杂, ...

  9. CentOS6.6部署OpenStack Havana(Nova-Network版)

    CentOS6.4部署OpenStack Havana(Nova-Network版) 一 基本设备介绍 测试环境 CentOS6.4 x64 OpenStack 服务 介绍 计算 (Compute) ...

  10. 在CentOS7上部署OpenStack 步骤详解

    OpenStack作为一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,开放源代码项目的云计算管理平台项目.具体知识我会在后面文章中做出介绍,本章主要按步骤给大家演示在Cent ...

随机推荐

  1. apisix~自定义插件的部署

    参考 https://docs.api7.ai/apisix/how-to-guide/custom-plugins/create-plugin-in-lua https://apisix.apach ...

  2. AIRIOT答疑第3期|如何使用物联网平台的可视化组态引擎?

    丰富组件,满足千人千面! AIRIOT物联网低代码平台的可视化组态引擎,具备丰富的可视化看板及组件,满足各类工艺流程图.数据可视化需求.支持三维编辑.图形绘制.图表设计等设计方式,PPT模式设计软件界 ...

  3. MinIo对象存储文件上传,下载,预览,批量上传,创建桶等

    MinIo 操作工具类 MinIo 旧中文文档 MinIo 英文文档 MinIo 官网地址 https://min.io/ package com.ming.utils; import io.mini ...

  4. 记录一次 对应用程序日志排查,老是刷出有本地ip登录Sqlserver数据库失败的日志

    在我电脑-计算机管理-事件查看器-windows日志-应用程序里 1秒中就刷很多条 用户sa登录某个数据库失败,客户端ip:192....; 我查看ip发现是本机的ip地址.也就是说有本地的应用程序在 ...

  5. nginx源码安装步骤

    1.安装依赖包 yum install -y gcc yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install ...

  6. Flask学习记录:在w3cschool资料的基础上的个人摘录、实践与总结

    学习与转载自w3cschool,在w3cschool资料的基础上的个人摘录.实践与总结,如有错误望留言. 一.Flask 概述 2021-08-25 14:01 更新 1.1 什么是Web Frame ...

  7. nginx分流配置

    user nginx; worker_processes 1; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; eve ...

  8. linux的账号和组

    1.0 账号与用户组 1.1 用户标识符:UID,GID 虽然我们登陆Linux主机的时候输入的是账号,但其实Linux主机并不会直接认识你的账号名称,账号只是为了方便人. 一个文件如何判断他的拥有者 ...

  9. U-Boot命令使用

    帮助命令 help 所有命令提示: h ? help 某一条命令提示: ? 命令名 help 命令名 信息查询命令 bdinfo 查看板子信息: => bdinfo arch_number = ...

  10. NumPy 通用函数(ufunc):高性能数组运算的利器

    NumPy 通用函数(ufunc) 简介 NumPy 通用函数(ufunc),代表"通用函数",是一类用于对 ndarray 对象进行逐元素运算的高性能函数.ufunc 使 Num ...