本文最后更新于 207 天前,其中的信息可能已经有所发展或是发生改变。

kolla ansible简介

kolla 的使命是为 openstack 云平台提供生产级别的、开箱即用的交付能力。kolla 的基本思想是一切皆容器,将所有服务基于 Docker 运行,并且保证一个容器只跑一个服务(进程),做到最小粒度的运行 docker。

kolla 要实现 openetack 部署总体上分为两步,第一步是制作 docker 镜像,第二步是编排部署。因此,kolla 项目又被分为两个小项目:kolla、kolla-ansible 。

20200613094347844

kolla-ansible项目https://github.com/openstack/kolla-ansible

kolla项目https://tarballs.opendev.org/openstack/kolla/

dockerhub镜像地址https://hub.docker.com/u/kolla/

安装环境准备

官方部署文档:https://docs.openstack.org/kolla-ansible/train/user/quickstart.html

本次部署train版all-in-one单节点,使用一台centos7.8 minimal节点进行部署,该节点同时作为控制节点、计算节点、网络节点和cinder存储节点使用,同时也是kolla ansible的部署节点。

kolla安装节点要求:

2 network interfaces
8GB main memory
40GB disk space

如果是vmware workstation环境,勾选处理器选项的虚拟化引擎相关功能,否则后面需要配置nova_compute_virt_type=qemu参数,这里选择勾选,跳过以下步骤。

cat /etc/kolla/globals.yml
nova_compute_virt_type: "qemu"

#或者部署完成后手动调整
[root@kolla ~]# cat /etc/kolla/nova-compute/nova.conf |grep virt_type
#virt_type = kvm
virt_type = qemu

[root@kolla ~]# docker restart nova_compute

kolla的安装要求目标机器至少两块网卡,本次安装使用2块网卡对应管理网络和外部网络两个网络平面,在vmware workstation虚拟机新增一块网卡ens34:

ens32,NAT模式,管理网络,正常配置静态IP即可。租户网络与该网络复用,租户vm网络不单独创建网卡
ens34,桥接模式,外部网络,无需配置IP地址,这个其实是让neutron的br-ex 绑定使用,虚拟机通过这块网卡访问外网。

ens34网卡配置参考:https://docs.openstack.org/install-guide/environment-networking-controller.html

cat > /etc/sysconfig/network-scripts/ifcfg-ens34 <<EOF
NAME=ens34
DEVICE=ens34
TYPE=Ethernet
ONBOOT="yes"
BOOTPROTO="none"
EOF

#重新加载ens34网卡设备
nmcli con reload && nmcli con up ens34

如果启用cinder还需要额外添加磁盘,这里以添加一块/dev/sdb磁盘为例,创建为物理卷并加入卷组。

pvcreate /dev/sdb
vgcreate cinder-volumes /dev/sdb

注意卷组名称为cinder-volumes,默认与后面的globals.yml中定义一致。

[root@kolla ~]# cat /etc/kolla/globals.yml | grep cinder_volume_group
#cinder_volume_group: "cinder-volumes"

部署kolla ansible

配置主机名,kolla预检查时rabbitmq可能需要能够进行主机名解析

hostnamectl set-hostname kolla

安装依赖

yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python python2-pip  python-pbr epel-release ansible

配置阿里云pip源,否则pip安装时会很慢

mkdir ~/.pip
cat > ~/.pip/pip.conf << EOF 
[global]
trusted-host=mirrors.aliyun.com
index-url=https://mirrors.aliyun.com/pypi/simple/
EOF

安装 kolla-ansible

kolla版本与openstack版本对应关系:https://releases.openstack.org/teams/kolla.html

pip install setuptools==22.0.5
pip install pip==20.3.4
pip install wheel
pip install kolla-ansible==9.1.0 --ignore-installed PyYAML

复制 kolla-ansible配置文件到当前环境

mkdir -p /etc/kolla
chown $USER:$USER /etc/kolla

cp -r /usr/share/kolla-ansible/etc_examples/kolla/* /etc/kolla

cp /usr/share/kolla-ansible/ansible/inventory/* .

修改ansible配置文件

cat << EOF | sed -i '/^\[defaults\]$/ r /dev/stdin' /etc/ansible/ansible.cfg
host_key_checking=False
pipelining=True
forks=100
EOF

默认有all-in-one和multinode两个inventory文件,这里使用all-in-one,来规划集群角色,配置默认即可

[root@kolla ~]# cat all-in-one | more

检查inventory配置是否正确,执行:

ansible -i all-in-one all -m ping

生成openstack组件用到的密码,该操作会填充/etc/kolla/passwords.yml,该文件中默认参数为空。

kolla-genpwd

修改keystone_admin_password,可以修改为自定义的密码方便后续horizon登录,这里改为kolla。

$ sed -i 's#keystone_admin_password:.*#keystone_admin_password: kolla#g' /etc/kolla/passwords.yml 

$ cat /etc/kolla/passwords.yml | grep keystone_admin_password
keystone_admin_password: kolla

修改全局配置文件globals.yml,该文件用来控制安装哪些组件,以及如何配置组件,由于全部是注释,这里直接追加进去,也可以逐个找到对应项进行