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. warning: ignoring return value of ‘scanf’, declared with attribute warn_unused_result [-Wunused-result] scanf("%d",&f);

    这个是C语言当中常见的错误,意思是 对于输入的scanf参数的内容,没有进行类型判断,所以才会产生这个问题. 解决方法: 1.添加if判断方式 1 if(scanf("%d",&a ...

  2. 教你如何搞定springboot集成kafka

    本文分享自华为云社区<手拉手入门springboot+kafka>,作者:QGS. 安装kafka 启动Kafka本地环境需Java 8+以上 Kafka是一种高吞吐量的分布式发布订阅消息 ...

  3. Java学习之数据类型转换

    package com.zhang.LectCode; public class 各种数据间的相互转换 { public static void main(String[] args) { //将St ...

  4. Spring 面向切面编程AOP 详细讲解

    1. Spring 面向切面编程AOP 详细讲解 @ 目录 1. Spring 面向切面编程AOP 详细讲解 每博一文案 2. AOP介绍说明 2.1 AOP的七大术语 2.2 AOP 当中的 切点表 ...

  5. dotnet 命令行工具解决方案 PomeloCli

    PomeloCli 是什么 中文版 English version 我们已经有相当多的命令行工具实现或解析类库,PomeloCli 并不是替代版本,它基于 Nate McMaster 的杰出工作 Co ...

  6. MySQL查询某个字段含有字母数字的值

    1.正则表达式(REGEXP) 查询MySQL表中某个字段含有字母和数字的值,可以使用正则表达式(REGEXP)来匹配这样的模式.在MySQL中,正则表达式是一个强大的工具,可以用来搜索和匹配字符串中 ...

  7. 如何从零开始实现TDOA技术的 UWB 精确定位系统(6)

    这是一个系列文章<如何从零开始实现TDOA技术的 UWB 精确定位系统>第6部分. 重要提示(劝退说明): Q:做这个定位系统需要基础么? A:文章不是写给小白看的,需要有电子技术和软件编 ...

  8. pidstat 命令查看nginx上下文切换

    pidstat -w -p 711 1 [root@leilei ~]# ps -ef|grep nginx root 13974 1 0 14:23 ? 00:00:00 nginx: master ...

  9. svn递归添加目录下面所有文件

    进入根目录:$ svn add * --force A foo.c A somedir/bar.c A otherdir/docs/baz.doc

  10. redhat8连接xshell命令卡顿

    取消下方  转发x11连接到(X) 再重新连接一遍 就好了