Kolla ansible 部署 OpenStack Zed

系统要求

单机部署最低配置:

  • 2张网卡
  • 8G内存
  • 40G硬盘空间

主机系统:

  • CentOS Stream 9
  • Debian Bullseye (11)
  • openEuler 22.03 LTS
  • Rocky Linux 9
  • Ubuntu Jammy (22.04)

官方不再支持CentOS 7作为主机系统,我这里使用的是Rocky Linux 9.1(最小化安装)

1. 安装依赖

1.1 安装基础依赖

dnf install git python3-devel libffi-devel gcc openssl-devel python3-libselinux

1.2 安装Ansible额外需要的包

官方文档中没有说明,实际部署过程中,没有这两个包会无法使用pip安装的ansible

dnf install python3-resolvelib sshpass

1.3 设置Python-venv虚拟环境

为了防止与系统的python环境冲突,这里使用虚拟环境安装ansible与kolla-ansible
/path/to/venv是虚拟环境的目录,可以自己指定

创建虚拟环境

python3 -m venv /path/to/venv

进入虚拟环境

source /path/to/venv/bin/activate

在虚拟环境中输入deactivate命令,即可退出虚拟环境

更换pip国内源,更新pip

pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install -U pip

1.4 安装Ansible

Kolla-ansible需要ansible 5版本,这里需要指定版本安装

pip install 'ansible>=4,<6'

2. 安装Kolla-ansible

2.1 安装本体

pip install git+https://opendev.org/openstack/kolla-ansible@stable/zed

2.2 获取Kolla配置文件

创建配置文件夹

mkdir /etc/kolla

复制global.ymlpassword.yml到配置文件夹

cp -r /path/to/venv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla

2.3 获取Ansible清单文件

复制all-in-onemultinode两个清单文件,分别对应了单机部署与多节点部署

cp /path/to/venv/share/kolla-ansible/ansible/inventory/* .

3. 安装Ansible Galaxy依赖

kolla-ansible install-deps

4. 配置Ansible

单机部署时,可以跳过这一步

编辑/etc/ansible/ansible.cfg,如果没有则需要先创建,将下面的内容添加到配置文件中

[defaults]
host_key_checking=False
pipelining=True
forks=100

5. 准备初始化配置

5.1 修改hosts

单机部署时,可以跳过这一步

在部署机的hosts中添加需要部署的主机的主机名,后续会自动同步到所有节点
编辑/etc/hosts文件,我这里准备部署1台控制节点与2台计算节点

10.0.8.121 kolla-control
10.0.8.122 kolla-compute1
10.0.8.123 kolla-compute2

5.2 准备清单文件

  • 单机部署时,使用all-in-one清单文件
  • 多节点部署时,使用multinode清单文件

单机部署时,可以不用修改all-in-one清单文件

下面是我的multinode清单文件的开头部分,供参考

[control]
# 指定root密码、管理网卡
kolla-control  ansible_ssh_pass="***"  network_interface="ens192"

[network:children]
# 可在组名后添加:children来对组进行嵌套
compute

[compute]
# 指定root密码、管理网卡、外部网卡
kolla-compute1  ansible_ssh_pass="***"  network_interface="ens192" neutron_external_interface="ens224"
kolla-compute2  ansible_ssh_pass="***"  network_interface="ens192" neutron_external_interface="ens224"

[monitoring:children]
control

详细的配置规则见 Ansible文档

配置完成后,使用下面的命令测试Ansible的连通性

ansible -i multinode all -m ping

5.3 生成密码

kolla-genpwd

密码存储在/etc/kolla/passwords.yml

5.4 配置global.yml

镜像选择

Kolla可以选择多种镜像版本:

  • CentOS Stream (centos)
  • Debian (debian)
  • Rocky (rocky)
  • Ubuntu (ubuntu)

官方推荐新安装的使用rocky或ubuntu,这里使用和主机相同的rocky发行版

kolla_base_distro: "rocky"

镜像仓库

国内可能访问quay.io比较慢,可以指定国内的quay.io源

docker_registry: "quay.nju.edu.cn"

网络

管理网络的网卡,也用于主机之间的通信

network_interface: "eth0"

连接外部网络的网卡,需要一个开启的,没有配置IP的网卡

neutron_external_interface: "eth1"

用于管理的浮动IP,由keepalived提供高可用性,必须是管理网络中没有被使用的地址

kolla_internal_vip_address: "10.0.8.250"

global.yml中所有的选项,都可以在清单文件中为每个主机单独配置。上面的multinode文件中,指定了每台主机的管理网卡与外部网卡。

6. 部署

我这里采用多节点部署,使用的是multinode清单文件,单机部署请使用all-in-one清单文件

引导服务器

kolla-ansible -i ./multinode bootstrap-servers

部署前检查

kolla-ansible -i ./multinode prechecks

开始部署

kolla-ansible -i ./multinode deploy

7. 使用OpenStack

7.1 命令行(OpenStack CLI)

安装CLI客户端

pip install python-openstackclient -c https://releases.openstack.org/constraints/upper/zed

生成openrc文件

kolla-ansible post-deploy

使用openrc文件

. /etc/kolla/admin-openrc.sh

接下来就可以使用OpenStack CLI了

7.2 网页(Horizon)

浏览器中访问kolla_internal_vip_address,输入账号密码即可

账号密码可在openrc文件中查看

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