环境准备

Kolla-Ansible 只支持列表 Supported Operating Systems 中的操作系统,这里选用 Ubuntu 20.04 。

主机配置

  • CPU:4 Cores
  • 内存:16 GB
  • 硬盘:512 GB
  • 网卡:
    • NAT-Network
    • 未指定

更换 pip 源(可选)

在用户根目录创建文件夹 .pip ,添加配置文件 pip.conf

1
2
3
4
5
# 创建文件夹
cd && mkdir .pip && cd .pip

# 创建并编辑配置文件
sudo vim pip.conf

pip 源配置如下

1
2
3
4
[global]
timeout = 6000
index-url = http://mirrors.aliyun.com/pypi/simple/
trusted-host = mirrors.aliyun.com

更换 Ubuntu 源(可选)

备份源文件,再替换成清华的镜像源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 备份
sudo mv /etc/apt/sources.list /etc/apt/sources.list.bk

# 设置镜像源
sudo vim /etc/apt/sources.list

# 更新源
sudo apt update

# 升级
sudo apt dist-upgrade -y

# 重启
sudo reboot

镜像源设置如下

1
2
3
4
5
6
7
8
9
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

安装依赖

1
2
3
4
5
# 更新源
sudo apt update

# 安装 Python 构建依赖
sudo apt install python3-dev libffi-dev gcc libssl-dev -y

安装 venv,创建并使用虚拟环境

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装 venv
sudo apt install python3-venv -y

# 创建虚拟环境
mkdir code
python -m venv /home/jck/code

# 激活虚拟环境
source /home/jck/code/bin/activate

# 安装 Ansible
pip install -U pip
pip install 'ansible<3.0'

部署 OpenStack

安装 Kolla-Ansible

使用 git 克隆仓库,-b 参数指定版本

1
2
git clone https://github.com/openstack/kolla -b stable/victoria
git clone https://github.com/openstack/kolla-ansible -b stable/victoria

在虚拟环境中安装依赖

1
2
3
4
5
6
7
8
9
10
11
12
13
# 安装
pip install ./kolla
pip install ./kolla-ansible

# 创建目录
sudo mkdir -p /etc/kolla

# 权限设置
sudo chown $USER:$USER /etc/kolla

# 拷贝配置文件
cp -r kolla-ansible/etc/kolla/* /etc/kolla
cp kolla-ansible/ansible/inventory/* .

配置 Ansible

创建并编辑 Ansible 配置文件 ansible.cfg

1
2
3
4
5
# 创建
sudo touch /etc/ansible/ansible.cfg

# 编辑
sudo vim /etc/ansible/ansible.cfg

添加以下配置:

1
2
3
4
[defaults]
host_key_checking=False
pipelining=True
forks=100

准备初始配置

Inventory

两个示例文件:all-in-one 和 multinode,单机部署不需要做额外的修改。

Kolla 密码

部署过程中使用的密码存储在 /etc/kolla/passwords.yml 文件,初始为空白,需要手动设置或随机生成。

1
2
cd kolla-ansible/tools
./generate_passwords.py

Kolla globals.yml

globals.yml 是 Kolla-Ansible 的主要配置文件,以下选项需要进行配置:

  • Image options:指定用于部署的镜像,支持 centosubuntudebianrhel
    • type:只影响 OpenStack 服务
      • binary:使用存储仓库,例如 apt 或 dnf;基础设施服务通常使用这个选项
      • source:使用原始源存档,例如 git 仓库或本地源目录;比 binary 稍微可靠些
  • Networking:网络配置
    • network_interface:管理网络
    • external_interface:Neutron 外部网络,没有 ip 的网卡
    • internal_vip_address:浮动 IP 范围,与管理网络同网段
  • Enable additional services:安装额外的服务组件
  • Multiple globals files:使用额外的配置文件启用服务,在 etc/kolla/globals.d 目录下创建
  • Virtual environment:建议在远程主机上使用虚拟环境执行

编辑配置文件

1
sudo vim /etc/kolla/globals.yml

配置如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 操作系统
kolla_base_distro: "ubuntu"

# 安装方式
kolla_install_type: "source"

# 网络
kolla_internal_vip_address: "10.1.0.250" # network_interface 同网段

network_interface: "ens192"

neutron_external_interface: "ens160" # 空闲网卡

#enable_cinder: "yes"

#enable_cinder_backend_nfs: "yes"

# 计算
nova_compute_virt_type: "qemu"

因为不支持虚拟化,所以配置为 qemu ,需要额外安装 libvirt(应该不用装)

1
2
3
# 安装 libvirt
sudo apt update
sudo apt install qemu-kvm libvirt-daemon-system -y

部署

配置文件准备完毕后即可进行部署,首先进行基础的主机级依赖设置,Kolla-Ansible 提供了一个安装所有必需服务的 playbook

1
2
3
4
5
6
7
8
# 根据 Kolla 部署依赖创建服务器
kolla-ansible -i all-in-one bootstrap-servers

# 部署前检查主机
kolla-ansible -i all-in-one prechecks

# 部署 OpenStack
kolla-ansible -i all-in-one deploy

使用 OpenStack

1
2
# 安装 OpenStack CLI 客户端
pip install python-openstackclient

OpenStack 需要 openrc 文件,其中设置了 admin 用户的凭据

1
2
3
# 生成 openrc 文件
kolla-ansible post-deploy
. /etc/kolla/admin-openrc.sh

执行脚本生成示例网络、镜像、实例等

1
code/share/kolla-ansible/init-runonce

创建实例

1
2
3
4
5
6
7
8
9
10
11
pip install python-openstackclient

# 创建实例
openstack server create \
--image cirros \
--flavor m1.tiny \
--network demo-net \
demo1

# 确认实例状态
openstack server list

访问 ip 地址可进入 horizon 登录界面

  • 用户名:admin
  • 密码:查看 /etc/kolla/passwords.yml

参阅