使用Kolla-Ansible部署OpenStack环境部署

部署环境

角色 机器名 IP

系统

计算节点

OpenStackControl

ens3

172.28.191.99

ens4

192.168.1.156

CentOS8.3
控制节点 OpenStackCompute

ens3

172.28.191.88

ens4

192.168.1.177

CentOS8.3
部署节点 localhosts(不重要)

ens3

172.28.191.55

CentOS8.3

注:计算节点和控制节点中不要包含 ‘_’

之后的就是官网的kolla-ansible的安装

yum install epel-release
yum install python-pip
pip install -U pip

yum install python-devel libffi-devel gcc openssl-devel libselinux-python

yum install ansible

pip install kolla-ansible

(官网上是这样的)
cp -r /usr/share/kolla-ansible/etc_examples/kolla /etc/
cp /usr/share/kolla-ansible/ansible/inventory/* .

(我的是这样的)
cp -r /usr/local/share/kolla-ansible/etc_examples/kolla /etc/
cp /usr/local/share/kolla-ansible/ansible/inventory/* .

git clone https://github.com/openstack/kolla
git clone https://github.com/openstack/kolla-ansible

pip install -r kolla/requirements.txt
pip install -r kolla-ansible/requirements.txt
cp kolla-ansible/ansible/inventory/* .

使用pip安装的时候可能会出现些依赖,通过报错进行修正就行了

官方网址:OpenStack Docs: Quick Start

因为是多节点的OpenStack,所以使用文件multinode 。

[control]
172.28.191.99 ansible_user=root ansible_password=foobar ansible_become=true
# Ansible supports syntax like [10:12] - that means 10, 11 and 12.
# Become clause means "use sudo".

[network:children]
control
# when you specify group_name:children, it will use contents of group specified.

[compute]
172.28.191.88 ansible_user=root ansible_password=foobar ansible_become=true

[monitoring]
compute
# This group is for monitoring node.
# Fill it with one of the controllers' IP address or some others.

[storage:children]
compute

[deployment]
localhost       ansible_connection=local become=true
# use localhost and sudo

首先确认各个节点是通畅的

ansible -i multinode all -m ping

手动为kolla创建密码

kolla-genpwd

其次就是修改globals.yml文档了

kolla_base_distro: "centos"
kolla_install_type: "binary"
openstack_release: "victoria"
kolla_internal_vip_address: "172.28.191.99"
network_interface: "ens3"
neutron_external_interface: "ens4"
enable_haproxy: "no"
enable_keepalived: "{{ enable_haproxy | bool }}"
enable_cinder: "yes"
enable_cinder_backend_lvm: "yes"
cinder_volume_group: "cinder-volumes"

这里需要注意一点,组件cinder是管理集群的存储的,所以必须enable,但是在使用enable_cinder的时候,必须确保机器上存在一个cinder-volumes(默认,可在globals.yml修改)的卷组。

创建卷组的方式

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

注意:磁盘修改卷组很危险,切记识别好准备好的磁盘

开始部署OpenStack

kolla-ansible -i ./multinode bootstrap-servers

在部署的时候可能会遇到相关的组件冲突,可以百度相关冲突进行解决

我这边是在

TASK [baremetal : Install RPM packages]

进行报错,因为podman buildah和docker冲突了,所以执行yum erase podman buildah -y解决这个问题,其他冲突可以类比这个

kolla-ansible -i ./multinode prechecks

部署的事前检查,其中我这边问题是

TASK [prechecks : Fail if a host NTP daemon is not running],

由于控制节点和计算节点时间不同步的原因,解决方案是

yum install chrony

ntp server:
vim /etc/chrony.conf 

allow 192.168.0.0/24
server ntp1.aliyun.com iburst

[root@localhost ~]# chronyc sources
210 Number of sources = 4
MS Name/IP address         Stratum Poll Reach LastRx Last sample               
===============================================================================
^? sv1.ggsrv.de                  2   6     1     0  -88239s[-88239s] +/-   76ms
^? 119.28.183.184                2   6     1     1  -88239s[-88239s] +/-   50ms

之后再计算节点的时候出现

TASK [nova-cell : Checking that libvirt is not running]

解决方法是

rm /var/run/libvirt/libvirt-sock -f

进行部署

kolla-ansible -i ./multinode deploy

期间可能会出现很多问题,耐心解决吧,有一个问题我需要提一下

在deploy完毕之后检查容器的运行状态,发现了kolla/centos-binary-horizon这个容器一直重启,导致了无法从web访问OpenStack,通过查验容器日志,以及kolla-ansible的源代码,发现在容器中有三个环境变量没有设定,解决方案如下

修改文件/usr/local/share/kolla-ansible/ansible/roles/horizon/defaults/main.yml

在
project_name: "horizon"

horizon_services:
  horizon:
    container_name: horizon
    group: horizon
    enabled: true
    image: "{{ horizon_image_full }}"
    environment:
      ENABLE_BLAZAR: "{{ 'yes' if enable_horizon_blazar | bool else 'no' }}"
.....
中追加三个参数定义
project_name: "horizon"

horizon_services:
  horizon:
    container_name: horizon
    group: horizon
    enabled: true
    image: "{{ horizon_image_full }}"
    environment:
      ENABLE_BLAZAR: "{{ 'yes' if enable_horizon_blazar | bool else 'no' }}"
      ENABLE_KARBOR: "no"
      ENABLE_QINLING: "no"
      ENABLE_SEARCHLIGHT: "no"
.....

容器就能够正常启动了

之后就是部署完毕之后的post-deploy

可以在部署节点做也可以都做

pip install python-openstackclient python-glanceclient python-neutronclient

kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh

初始化集群
会创建镜像,网络等
. /usr/share/kolla-ansible/init-runonce

可以通过web界面查看了

对于后续的使用问题,可以给我留言,我也是小白,可能我也不清楚,但是很乐意一起探讨。

你可能感兴趣的:(Openstack,linux,openstack)