Ubuntu 18.04.1 LTS + kolla-ansible 部署 openstack Rocky all-in-one 环境
1. kolla 项目介绍
简介
kolla 的使命是为 openstack 云平台提供生产级别的、开箱即用的自动化部署能力。
kolla 要实现 openetack 部署分为两步,第一步是制作 docker 镜像,第二步是用 ansible 实现编排部署。因此,kolla 项目又被分为两个小项目:kolla、kolla-ansible,分别用于实现镜像制作和编排部署功能。
kolla-kubernetes 类似于于 kolla-ansible,篇幅原因本文不做过多介绍。
kolla 的优势
市面上 openstack 的部署工具和方案很多,kolla 的优势主要得益于容器技术:
- 快速部署,平滑升级,升级影响时间非常短。
- 升级粒度小。可以以组件为单位进行升级,例如升级 nova 组件,使用 kolla-ansible -i ~/kolla/all-in-one upgrade -t nova 命令即可。
- 只需操作系统与 docker 兼容,从而减少了很多 openstack 安装包与基础安装包的冲突。
- kolla 项目在社区内的热度相对较高,社区支持更好。
关于本文实验
本文主要介绍下如何在 Ubuntu 18.04.1 LTS 系统上使用 kolla 部署 opesntack Rocky 版本 all-in-one 环境,其中:
- kolla-ansible 使用源代码而不使用安装包的方式。
- kolla-ansible 运行环境使用 virtualenv 而不是用本地 python 环境。
- docker 的 regisry 使用公用的 Docker Hub 而不是自己搭建。
- 本实验部署的 openstack 组件有 nova、neutron 及部分 neutron 插件、heat、glance、cinder-volume(lvm后端)、horizon。
2. 环境准备
基础环境
- 操作系统版本:Ubuntu 18.04.1 LTS minimal 安装(虚拟机)
- 两块网卡,一块有 IP 地址,另一块只需 up 状态,不需要 IP 地址
- 系统内核版本:4.15.0-29-generic
- kolla-absible 版本:kolla-ansible rocky 稳定版
- openstack 版本:rocky 稳定版
关于网卡,部署all-in-one最少需要两块网卡。有 IP 地址的网卡作为管理网和其他网络默认网卡(包括存储网),没有 IP 地址的网卡作为业务网络网卡;第二块网卡不需配置 IP 地址,否则会影响虚拟机联网。
virtualenv
为了与其他 python 项目隔离,本实验使用 virtualenv 来存放 kolla 项目。
创建 virtuanenv 并激活:
# 升级 pip
sudo pip install -U pip
# 安装 venv
sudo pip install virtualenv
sudo virtualenv ~/kolla/virtualenv
sudo source ~/kolla/virtualenv/bin/activate
3. 安装依赖包
升级包索引
sudo apt-get update
安装 python 依赖包
sudo apt-get install python-dev libffi-dev gcc libssl-dev python-selinux python-setuptools
4. Ansible
安装 ansible
sudo apt-get install ansible
配置 ansible
更改 ansible 配置文件 /etc/ansible/ansible.cfg(配置文件不存在则需新建):
cat << EOF > /etc/ansible/ansible.cfg
[defaults]
host_key_checking=False
pipelining=True
forks=
EOF
关于 ansible 的配置项及含义,可以参考 ansible基础-安装与配置
5. lvm 配置
创建 loop 设备和 lvm
本实验环境我们使用 lvm 作为 cinder-volume 后端存储。一种方法是给虚拟机添加一块硬盘 sdb 并创建 pv 和 vg。另一种方式是使用本地文件创建 loop 设备然后再创建 pv 和 vg。
第一种方式操作起来比较简单,这里介绍下第二种方式:
free_device=$(losetup -f)
fallocate -l 20G /var/lib/cinder_data.img
losetup $free_device /var/lib/cinder_data.img
pvcreate $free_device
vgcreate cinder-volumes $free_device
6. kolla-ansible
下载指定分支的 kolla-ansible 代码
cd ~/kolla
git clone https://github.com/openstack/kolla-ansible -b stable/rocky
配置 kolla-ansible
安装依赖:
pip install -r kolla-ansible/requirements.txt
创建 kolla 配置文件并设置权限:
sudo mkdir -p /etc/kolla
sudo chown $USER:$USER /etc/kolla
拷贝 kolla 配置文件模版:
cp -r kolla-ansible/etc/kolla/* /etc/kolla
修改 kolla 配置文件:
cat << EOF > /etc/kolla/globals.yml
---
enable_iscsid: 'no' #不加会报错,看起来是stable/rocky分支的bug
kolla_base_distro: "ubuntu"
kolla_install_type: "source" #使用基于源代码的image
openstack_release: "rocky" #该配置项最好与kolla-ansible分支版本保持一致
kolla_internal_vip_address: "10.211.55.23" #与network_interface配置项网卡ip保持一致
network_interface: "enp0s5"
neutron_external_interface: "enp0s6"
enable_cinder: "yes" #开启cinder部署开关
enable_cinder_backend_lvm: "yes" #使用lvm作为cinder-volume后端存储
enable_haproxy: "no"
glance_enable_rolling_upgrade: "no"
nova_compute_virt_type: "qemu" #使用虚拟机部署时,该配置项必须改为qemu,默认值为kvm
EOF
生成密码文件:
#执行脚本自动生成
cd kolla-ansible/tools
./generate_passwords.py
#检验
cat /etc/kolla/passwords.yml
拷贝 ansible 主机清单文件:
cp kolla-ansible/ansible/inventory/* ~/kolla
主机清单(inventory)文件定义了 ansible 的主机组的划分,如果是 all in one 环境那么直接使用 all-in-one 文件即可,无需修改。
7. 执行部署
Bootstrap servers
cd kolla-ansible/tools
./kolla-ansible -i ~/kolla/all-in-one bootstrap-servers
部署前检查
这里要添加 ansible_python_interpreter 变量,用于指定 virtualenv 环境位置,否则执行报错:
./kolla-ansible -i ~/kolla/all-in-one prechecks -e 'ansible_python_interpreter=/root/kolla/virtualenv/bin/python'
执行部署
这步也要指定 virtualenv 环境位置:
./kolla-ansible -i ~/kolla/all-in-one deploy -e 'ansible_python_interpreter=/root/kolla/virtualenv/bin/python'
生成 keystone admin 用户环境变量文件
./kolla-ansible -i ~/kolla/all-in-one post-deploy
. /etc/kolla/admin-openrc.sh
啊安装 openstack client
pip install python-openstackclient python-glanceclient python-neutronclient
8. 初始化与创建
初始化
初始化脚本会创建 cirros 镜像、网络、子网、路由、安全组、规格、配额等虚拟机资源:
. kolla-ansible/tools/init-runonce
创建虚拟机
根据实际环境替换 IMAGE_NAME 变量后执行如下脚本:
cat << EOF > ~/boot.sh
IMAGE_NAME=603672c1-47a9-45dc-92ad-226c2ac00d95
openstack server create --image ${IMAGE_NAME} --flavor m1.tiny --key-name mykey --network demo-net demo1
EOF
9. 参考链接
- https://docs.openstack.org/kolla-ansible/latest/reference/index.html
- https://docs.openstack.org/kolla-ansible/latest/user/quickstart.html
- https://blog.csdn.net/jmilk/article/details/80500234
- https://blog.csdn.net/moolight_shadow/article/details/51317441
Ubuntu 18.04.1 LTS + kolla-ansible 部署 openstack Rocky all-in-one 环境的更多相关文章
- 基于Ubuntu 18.04.5 LTS 部署Ceph集群测试及Ceph RDB的使用。
1.ceph简介 Ceph在一个统一的系统中独特地提供对象.块和文件存储 1.1 ceph官网架构图 1.2 架构解释 CEPH 对象存储 CEPH 块设备 CEPH 文件系统 RESTful 接 ...
- Ubuntu 18.04.2 LTS美化方案
Ubuntu 18.04.2 LTS美化方案记录 根据个人经验,我将Ubuntun美化分为四个部分:1)桌面:2)对话框界面:3)图标:4)登录及锁屏界面:5)终端.由于Ubuntu系统默认采用GNO ...
- Ubuntu 18.04.4 LTS 更换国内系统源
Ubuntu 18.04.4 LTS 更换国内系统源 1.1) 好习惯先做备份在干活: mv /etc/apt/sources.list /etc/apt/sources.list.bak 1.2) ...
- ubuntu 18.04下greenplum安装笔记(一)Linux下基础环境的搭建
背景 需要构建一个用于数据仓库的分布式数据库集群. 每一个节点暂时不需要进行备份,同时也不考虑坏掉的情况. 每一个数据节点最好都不用进行过多的配置,安装起来方便. Greenplum的Shared-N ...
- Ubuntu 18.04.3 LTS Virtualbox提示“Kernel driver not installed (rc=-1908)”问题修复一例
前两天Ubuntu升级了,重启后启动virtualbox保存 从错误报告上反映出来的问题原因是因为某些内核驱动程序没有经过编译,所以Virtualbox无法正常运行.事实上,在Ubuntu上处理这个问 ...
- Ubuntu 18.04.5 LTS Ceph集群之 cephx 认证及使用普通用户挂载RBD和CephFS
1.cephx认证和授权 1.1 CephX认证机制 Ceph使用cephx协议对客户端进行身份认证: 1.每个MON都可以对客户端进行身份验正并分发密钥, 不存在单点故障和性能瓶颈 2. MON会返 ...
- thinkpad X1 extreme 安装Ubuntu 18.04.2 LTS
1.安装的时候需要禁用:nouveau.modeset=0 2.安装完成之后需要添加:acpi=off ,ro后面加上3,直接进入终端 3.启动之后:安装nvdia驱动 $ ubuntu-driver ...
- Ubuntu操作系统(我的是ubuntu 18.04.3 LTS)
查看是否开启了ssh服务是否安装,使用命令: sudo ps -e |grep ssh 如果安装了的是会有sshd服务的,下面的图片是没有安装ssh服务 2 先更新资源列表,使用命令: sudo ap ...
- ubuntu 18.04 搭建flask服务器(大合集,个人实操)
ubuntu 18.04 搭建flask服务器(大合集) Ubuntu python flask 服务器 本次使用的Ubuntu版本为:Ubuntu 18.04.5 LTS (GNU/Linux 4. ...
随机推荐
- remove方法
1.jQuery的remove()方法 http://www.365mini.com/page/jquery-remove.htm ①返回值是jquery对象本身 所以可以做删除再添加的操作 // 移 ...
- 【新手向】自用的tooltip小插件,前端插件知识科普~
上面的tooltip就是成品图,为了和自己站点的风格保持一致所以自己写的. 第一部分:你绝对碰到过的匿名函数闭包问题 第二部分:写个tooltip demo 第三部分:源码地址 第一部分 你绝对碰到过 ...
- Mongodb数据更新命令、操作符
一.Mongodb数据更新命令 Mongodb更新有两个命令:update.save. 1.1update命令 update命令格式: db.collection.update(criteria,ob ...
- ubuntu16.04如何安装搜狗输入法
1 . 首先我们需要先来下载支持linux版本的搜狗输入法安装包,这里我们先查看下自己的ubuntu系统是什么版本的,这里我们可以在右上角的那个齿轮图标点击查看"系统设置",在里面 ...
- .net core下使用Thrift
因网站组(.net)与游戏服务端(c++)原来使用REST API通讯效率稍显低下,准备下期重构时改用rpc方式,经比较Thrift和gRPC两者的优劣(参照网上的对比结果),最终决定使用Thrift ...
- bzoj5251 [2018多省省队联测]劈配
直接网络流模拟即可AC. 可持久化+暴力=90分, 可持久化+二分=30分, 暴力加边+二分=100分. 我也很无奈啊. Ivan便涨红了脸,额上的青筋条条绽出,争辩道,“memcpy也是可持久化…… ...
- 【线段树】Bzoj1798 [AHOI2009] 维护序列
Description 老师交给小可可一个维护数列的任务,现在小可可希望你来帮他完成. 有长为N的数列,不妨设为a1,a2,…,aN .有如下三种操作形式: (1)把数列中的一段数全部乘一个值; (2 ...
- 在openjdk8下看Unsafe源码
尽管有传言JAVA9可能会移除Unsafe类,但不妨碍我们理解它的原理.因为类不在了,native方法还在那里.就像菜换样了,食材就那些没变.一个好厨师不仅仅需要会做菜,还需要能识别食材特性...来吧 ...
- java JDK配置环境变量
1)将下载的jdk放置到一定文件夹中,注意文件夹名不能有中文! 2)设置环境变量 a.可以在系统变量中找到path这个变量,然后将jdk下的bin的根目录添加进去 注意:一定要放在path变量值的最前 ...
- hibernate 一对一关系
一对一的另一种解决方式就是主键关联,在这种关联关系中,要求两个对象的主键必须保持一致,通过两个表的主键建立关联关系须外键参与. 没法传图 我就用这个表示吧 看id Copany Add ...