Skip to content

zongwu's blog

kolla-ansible 部署 all-in-one 模式 OpenStack stein版

前期准备

机器配置

20Core 50G Memory 3.6 T Storage

双网卡,enp3s0 局域网静态ip配置,网卡作为管理后台地址,enp4s0 不要配置静态ip,可使用dhcp模式分配ip,用于后续OpenStack的虚拟机上网网卡。

注意两个网卡不要处于同一网段,采用 enp4s0 所在的网关作为本机的默认网关。

系统环境配置

系统为 centOS 7.8 python 2.7.5

关闭防火墙/NetworkManager/SElinux

systemctl stop NetworkManager firewalld

systemctl disable NetworkManager firewalld

sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config

setenforce 0

硬盘的块存储配置

这台机器的硬盘主要挂载在 /home 下

cd /home
truncate -s 2000G disk.img

创建了一个大小为2T的文件。采用下面这种方式创建大文件的速度太慢:

dd if=/dev/zero of=./disk.img count=4096 bs=512MB 

创建文件之后,将磁盘文件虚拟成块设备

losetup -f

losetup /dev/loop0 disk.img
#将物理磁盘初始化为物理卷PV
pvcreate /dev/loop0
#创建卷组 cinder-volumes,将PV加入到VG中
vgcreate cinder-volumes /dev/loop0

(注意生产环境要单独配置真正的硬盘到VG,不要采用上述挂载方式,否则机器重启导致虚拟机文件找不到)

安装

安装 docker

curl -sSL https://get.docker.io | bash

配置共享

vim /etc/systemd/system/docker.service.d/kolla.conf

[Service]
MountFlags=shared  
ExecStart=
ExecStart=/usr/bin/dockerd --log-opt max-file=5 --log-opt max-size=50m

配置加速

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://******.mirror.aliyuncs.com"]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

registry-mirrors 地址可以在阿里云镜像管理自行申请。

安装其他依赖

yum install git
yum install -y epel-release  
yum install -y python-pip 
mkdir .pip
# 更改pip软件包源
tee /root/.pip/pip.conf << 'EOF'
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
EOF
pip install -U pip

安装ansible

pip install ansible

安装 kolla-ansible

这里要特别注意,不要按照官方文档说明,而是按照下面的操作,否则后面部署的时候,会出现各种错误导致部署失败

git clone https://github.com/openstack/kolla -b stable/stein
git clone https://github.com/openstack/kolla-ansible -b stable/stein
pip install -r kolla/requirements.txt
pip install -r kolla-ansible/requirements.txt
cd kolla-ansible &&  python setup.py install

这里是采用指定源码分支,安装 kolla-ansible。

当前目录是 kolla-ansible ,执行

mkdir /etc/kolla && cp etc/kolla/* /etc/kolla
cp ansible/inventory/* ~

生成OpenStack各服务的密码文件

kolla-genpwd
#修改openstack管理后台的登陆密码
vim /etc/kolla/passwords.yml
keystone_admin_password 123456

编辑 kolla的配置文件

vim /etc/kolla/globals.yml

kolla_base_distro: "centos"

#官方建议采用 source 更稳定而不是binary
kolla_install_type: "source"
# 版本
openstack_release: "stein"
# Kolla options

#这里的ip 是 network_interface 网卡的ip 如果不配置,导致数据库(高可用模式)无法正常启动
kolla_internal_vip_address: "10.0.0.104"

#单机模式,关闭高可用
enable_haproxy: "no"

# Neutron - Networking Options
network_interface: "enp3s0"
neutron_external_interface: "enp4s0"

# TLS options
kolla_enable_tls_internal: "no"
kolla_enable_tls_external: "no"

# 使用cinder存储
enable_cinder: "yes"
enable_glance: "yes"
enable_magnum: "yes"
enable_heat: "yes"

# 如果使用lvm,需先创建cinder-volumes的卷组,上面已经创建过
enable_cinder_backend_lvm: "yes"
# 默认是kvm ,但是实际部署发现不生效,系统自动采用了 qemu
nova_compute_virt_type: "kvm"

配置修改完成,可以拉取所有镜像,当前工作目录是 ~

#提前拉取依赖的镜像
kolla-ansible -i ./all-in-one pull

这个过程会很久,看网络情况。

部署

执行openstack部署需要的引导服务、部署前检查

# 引导服务
kolla-ansible -i ./all-in-one bootstrap-servers 
#安装前的检查
kolla-ansible -i ./all-in-one prechecks

结果都ok,可以进行部署

kolla-ansible -i ./all-in-one deploy

这一步也会很久。部署完成之后,

kolla-ansible -i ./all-in-one  post-deploy

这一步会生成 /etc/kolla/admin-openrc.sh 文件。

cat /etc/kolla/admin-openrc.sh 

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=123456
export OS_AUTH_URL=http://10.0.0.104:35357/v3
export OS_INTERFACE=internal
export OS_IDENTITY_API_VERSION=3
export OS_REGION_NAME=RegionOne
export OS_AUTH_PLUGIN=password

安装 openstackclient ,可以在控制台执行openstack命令

pip install python-openstackclient

管理

在浏览器打开 http://10.0.0.104 输入 admin 账号密码即可进入。