1 前言
今天咱们为一位朋友搭建一套OpenStack云平台。python

咱们使用Kolla部署stein版本的OpenStack云平台。linux
kolla是用于自动化部署OpenStack的一个项目,它基于docker和ansible来实现;docker主要负责镜像制做、容器管理。而ansible主要负责环境的部署和管理。git
2 实验环境介绍
因为我我的笔记本性能有限,所以本次实验采用all-in-one模式部署,即全部服务都部署在一台主机上。github
其实只要all-in-one模式熟练部署,多节点部署上手很快的web
2.1 系统准备

2.2 逻辑拓扑图

3 开始部署
3.1 Linux系统环境配置
-
主机网卡配置
docker
-
关闭防火墙、selinux及libvirtd服务json
[root@qll251 ~]# systemctl stop firewalld
[root@qll251 ~]# systemctl disable firewalld
[root@qll251 ~]# vim /etc/selinux/config
改:SELINUX=enforcing
为:SELINUX=disabled
[root@qll251 ~]# systemctl stop libvirtd.service
[root@qll251 ~]# systemctl disable libvirtd.service
[root@qll251 ~]# reboot #重启生效
-
安装epel源
yum -y install epel-release
-
CentOS 部分经常使用软件安装
yum install -y vim net-tools bash-completion-extras git
小提问:bash-completion-extras这个安装包有什么做用?bootstrap
-
配置主机名及hosts文件
[root@qll251 ~]# hostname qll251
[root@qll251 ~]# echo "qll251" > /etc/hostname
[root@qll251 ~]# echo "192.168.1.251 qll251" >> /etc/hosts
-
同步时间
[root@qll251 ~]# yum -y install ntp
[root@qll251 ~]# systemctl start ntpd
[root@qll251 ~]# systemctl enable ntpd
-
配置 pip 镜像源,方便快速下载python库
[root@qll251 ~]# mkdir ~/.pip
[root@qll251 ~]# vim ~/.pip/pip.conf
[global]
index-url = http://mirrors.aliyun.com/pypi/simple/
[install]
trusted-host=mirrors.aliyun.com
3.2 安装基础包和docker服务
-
安装基础包
yum -y install python-devel libffi-devel gcc openssl-devel python-pip
-
升级pip版本,否则后期安装会有报警

-
安装docker-ce
-
安装依赖包
yum -y install yum-utils device-mapper-persistent-data lvm2
-
添加docker-ce yum源文件
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
安装docker-ce
yum -y install docker-ce
-
启动docker服务
systemctl start docker
systemctl enable docker
-
指定docker 镜像加速器
[root@qll251 ~]# vim /etc/docker/daemon.json
添加以下内容:
{
"registry-mirrors": ["https://0i6rnnzu.mirror.aliyuncs.com"]
}

-
设置docker volume卷挂载方式
[root@qll251 ~]# mkdir /etc/systemd/system/docker.service.d
[root@qll251 ~]# vim /etc/systemd/system/docker.service.d/kolla.conf
# 添加以下内容
[Service]
MountFlags=shared
解释一下:MountFlags=shared,表示当宿主机新增分区时,docker服务无需重启便可识别。添加此参数后期OpenStack中使用cinder存储时,新加磁盘也比较方便vim
-
重启使配置生效
systemctl daemon-reload
systemctl restart docker
systemctl enable docker
3.3 从github 获取Kolla和Kolla-Ansible
-
安装ansible
yum -y install ansible
-
下载kolla及kolla-ansible代码
git clone https://github.com/openstack/kolla -b stable/stein
git clone https://github.com/openstack/kolla-ansible -b stable/stein
# 若是已有镜像,只执行第二步便可

-
手动安装kolla-ansible
python ~/kolla-ansible/setup.py install
-
安装kolla-ansible须要依赖包
[root@qll251 ~]# pip install -r /root/kolla-ansible/requirements.txt
若是出现此报错,咱们强制更新便可;
执行:
[root@qll251 ~]# pip install --ignore-installed PyYAML

-
安装kolla须要依赖包
[root@qll251 ~]# pip install -r /root/kolla/requirements.txt
注意:若是出现相似以下错误:
requests 2.20.0 has requirement idna<2.8,>=2.5, but you'll have idna 2.4 which is incompatible.
一样,强制更新requets库便可;
[root@qll251 ~]# pip install --ignore-installed requests
-
拷贝配置文件
[root@qll251 ~]# cd ~/kolla-ansible/
[root@qll251 kolla-ansible]# cp -r ./etc/kolla/* /etc/kolla/
[root@qll251 kolla-ansible]# cp ./ansible/inventory/* /etc/kolla/
#看下咱们都拷贝了哪些文件
[root@qll251 ~]# ls /etc/kolla/
all-in-one globals.yml multinode passwords.yml
[root@qll251 ~]#
配置文件解释:
all-in-one #安装单节点OpenStack的ansible自动安装配置文件
multinode # 安装多节点OpenStack的ansible自动安装配置文件
globals.yml # 部署OpenStack的自定义配置文件
passwords.yml #存放OpenStack各个服务的密码
-
生成随机密码
[root@qll251 ~]# kolla-genpwd
使用kolla提供的密码生成工具自动生成OpenStack各服务的密码,若是密码不填充,后面的部署环境检查时不会经过的。
-
修改随机密码文件
[root@qll251 ~]# vim /etc/kolla/passwords.yml
# 为了方便登陆Dashboard,咱们将密码修改成123123
165 keystone_admin_password: 123123
-
修改globals.yml配置文件
[root@qll251 ~]# vim /etc/kolla/globals.yml
# 指定镜像的系统版本
15 kolla_base_distro: "centos"
# 指定安装方式
18 kolla_install_type: "binary"
# 指定安装stein版本的OpenStack
21 openstack_release: "stein"
# 本次实验采用all-in-one模式,未启用高可用。填写宿主机IP便可
31 kolla_internal_vip_address: "192.168.1.251"
# OpenStack内部管理网络
89 network_interface: "eth0"
# Neutron外网网络
107 neutron_external_interface: "eth1"
# 本次实验采用all-in-one模式,未启用高可用
192 enable_haproxy: "no"
3.4 开始部署OpenStack
-
生成SSH Key,并授信本节点
ssh-keygen
ssh-copy-id root@192.168.1.251
-
配置单节点all-in-one配置文件
[root@qll251 ~]# vim /etc/kolla/all-in-one
# 将文件中全部的localhost替换成qll251
:1,$s/localhost/qll251/
# 去掉文件中全部包含“ansible_connection=local”
:1,$s/ansible_connection=local//
其实若是是单节点部署,这个步骤是可选的。带你们过一遍配置文件吧

-
带有kolla的引导服务器部署依赖关系
[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one bootstrap-servers
执行结果以下:
-
对主机执行预部署检查
[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one prechecks
执行结果以下:

其实若是能走到这一步,后面的实验基本就没啥问题了,加油!
-
拉取OpenStack镜像
[root@qll251 ~]# kolla-ansible -i /etc/kolla/all-in-one pull
咱们看下它在执行什么

正在下载OpenStack镜像,等等哦

聪明的小伙伴会趁它在自动部署过程当中,思考下当命令敲下去之后它都作了哪些操做
-
执行OpenStack部署
kolla-ansible -i /etc/kolla/all-in-one deploy
-
验证部署
kolla-ansible -i /etc/kolla/all-in-one post-deploy
执行结果以下,则说明您的OpenStack环境已部署成功!Congratulations!
同时也生成了admin用户的凭证, 即/etc/kolla/admin-openrc.sh文件
咱们看下该凭证:

4 登陆OpenStack云平台
在浏览器中输入:http://192.168.1.251
用户名:admin
密码:123123
登陆密码咱们在passwords.ym中指定为
123123
,在实际生产环境中可不能设置这么简单哦。

到此已完成OpenStack云平台的部署,明天咱们再来讨论下OpenStack 云平台基本使用方法及利用OpenStack客户端命令建立一台测试云主机。
最后的话
别看我搭建这么顺利呀,真到你部署了,可能会满屏报错哦。必定要细心,一不留神就会出现以下状况:

固然也不要有内心负担,以上报错基本都是不细心致使的,好比配置文件中多敲了一个空格或者中英符合复用等。要有信心而且细心哦,相信你能够的!

往期精彩
本文分享自微信公众号 - 开源Linux(qinlulu_123)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。