Kolla Ansible14.3.0基于虚拟环境部署 -ALL-IN-ONE版openstack

2023-05-16

介绍

Kolla的使命是为运营OpenStack云提供生产环境的容器和部署工具。可使用社区最佳实践进行扩展、快速、可靠和可升级。使用Ansible部署Docker容器运行OpenStack,并提供多种日志记录和监控服务配置。
可选:了解Ansible概念在这里插入图片描述

参考网址

官方Wiki:Kolla - OpenStack(openstack.org)
kolla文档:kolla 13.1.0.dev90 documentation (openstack.org)
镜像列表:kolla’s Profile | Docker Hub
高可用配置参考:HAProxy Guide — kolla-ansible 13.1.0.dev199 文档 (openstack.org)
kolla支持镜像列表: kolla 13.1.0.dev99 documentation (openstack.org)
快读入门:kolla-ansible 13.1.0.dev199 文档 (openstack.org)

快速部署ALL-IN-ONE节点

节点配置要求

须满足以下最低硬件配置:

  • 2 个网络接口(网卡)
  • 8GB 内存
  • 40GB 磁盘空间

实验环境:

  • 系统:Centos7.6-1810 或 Centos8
  • CPU:8核
  • 内存:16G
  • 网卡:eth0、eht1
  • 硬盘:40G(系统盘),100G(cinder服务使用)

安装Python虚拟环境

# centos7
sudo yum install python-virtualenv -y
# centos8
sudo dnf install python3-virtualenv -y

创建虚拟环境并激活

# 创建虚拟环境
virtualenv /path/to/virtualenv
# 激活虚拟环境
source /path/to/virtualenv/bin/activate

# 停用虚拟环境命令
# deactivate
# 列出虚拟环境列表命令
# workon
# 写入到用户环境 下次登陆后执行mypip就可以进入虚拟环境
alias mypip='source /path/to/virtualenv/bin/activate'
echo "alias mypip='source /path/to/virtualenv/bin/activate'" >> ~/.bash_profile 

更新pip版本 保存最新的pip版本

# 更新pip
pip install -U pip -i https://mirrors.aliyun.com/pypi/simple/
pip install -U setuptools -i https://mirrors.aliyun.com/pypi/simple/

安装Ansible

# Kolla Ansible需要Ansible 4到6版本 适用国内镜像 可以加快速度
pip install 'ansible>=4,<6' -i https://mirrors.aliyun.com/pypi/simple/

安装Kolla-ansible

# 安装Kolla-ansible
pip install kolla-ansible -i https://mirrors.aliyun.com/pypi/simple/
# 创建目录:/etc/kolla
sudo mkdir -p /etc/kolla
# 赋予用户权限:/etc/kolla
sudo chown $USER:$USER /etc/kolla
# 复制文件到目录。globals.yml、passwords.yml ->  /etc/kolla
cp -r /path/to/virtualenv/share/kolla-ansible/etc_examples/kolla/* /etc/kolla
# 复制文件到当前目录,这里复制的就是kolla的清单文件
cp /path/to/virtualenv/share/kolla-ansible/ansible/inventory/* .

设置python环境

对于all-in-one虚拟环境中的场景,将以下内容添加到清单的最开始:

vi ./all-in-one
localhost ansible_python_interpreter=python

如果采用虚拟环境的python 报错 则修改真实环境的python 路径
在这里插入图片描述

配置Ansible

# 对ansible进行配置
#创建文件
mkdir /etc/ansible/
#写入文件
cat > /etc/ansible/ansible.cfg << EOF
[defaults]
# 跳过首次连接验证提示
host_key_checking=False
# 利用管道替换默认的拷贝模块
pipelining=True
# 执行时的并发数
forks=100
log_path=ansible.log

gathering = smart
fact_caching = jsonfile
fact_caching_connection = ansible-facts

EOF

安装 Ansible Galaxy 要求

安装 Ansible Galaxy 依赖项(Yoga 版本以后):

kolla-ansible install-deps

准备初始配置

编辑kolla的清单文件,我们在其中指定主机及其所属的组。我们可以使用它来定义节点角色和访问凭据。
Kolla-Ansible附带了示例库存文件。它们之间的区别在于,前者已准备好在localhost上部署单节点OpenStack。如果需要使用单独的主机或多个节点,请编辑清单:all-in-one(单节点)、multinode(多节点)。
关于清单文件的更多信息

# 本文章以单节点为例,所以使用all-in-one配置文件
# vim all-in-one

# 检查配置清单是否正常
# 此命令会ping清单文件中的主机
ansible -i all-in-one all -m ping

生成密码

部署时所使用的密码在 /etc/kolla/passwords.yml 文件中,此文件中密码为空,需要手动或随机生成密码填充此文件。

# 自动生成密码并进行填充
kolla-genpwd

配置globals.yml文件

/etc/kolla/globals.yml 是 Kolla-Ansible 的主配置文件。部署 Kolla-Ansible 需要指定以下配置

# 修改globals.yml配置文件
vim /etc/kolla/globals.yml

修改为以下配置

# 指定使用centos基础镜像
kolla_base_distro: "centos"
# 指定使用二进制(yum安装)安装类型
kolla_install_type: "binary"
# 指定网络接口
## 管理接口
network_interface: "eth0"

## Neutron外部网络接口  连接外部网络的接口
neutron_external_interface: "eth1"

## 管理地址VIP(虚拟IP),设置一个没有被占用的IP,目的为了提供高可靠性。 需要能够ping通的ip地址
kolla_internal_vip_address: "10.48.39.132"

# 其他服务选项
## 启动cinder服务,并使用lvm卷组后端存储
enable_cinder: "yes"
cinder_volume_group: "cinder-volumes"   #这里指定cinder所使用的卷组
enable_cinder_backend_lvm: "yes"
## 请记得手动创建卷组
## pvcreate /dev/sdb
## vgcreate  cinder-volumes /dev/sdb

本文章只说明最小化的服务安装,不涉及监控、对象存储、ceph等服务的安装,如果需要特殊配置请阅读kolla-ansible项目配置
注意:配置文件中的 keepalived_virtual_router_id 值不能与同一二层中的其他openstack相同,他的值在0-255之间。(Keepalived)虚拟路由的唯一id,在同一个网段里,不能有两个相同的id。

开始执行部署

安装依赖

# 设置pip加速
pip config set global.index-url  https://mirrors.aliyun.com/pypi/simple/
# 使用pip安装一些python包
pip install requests
#在这docker 版本要在4.4。4 以上的 因为14.3.0的低版本docker 会报错
pip install docker
pip install websocket-client

部署OpenStack

设置配置后,我们可以进入部署阶段。首先,我们需要设置基本的主机级依赖项,如 docker。
Kolla-Ansible提供了一个剧本,将在正确的版本中安装所有必需的服务。
以下假设使用清单。如果使用其他清单(如 multinode ),请相应地替换参数。

# 1.部署依赖的引导服务器:安装一些包比如docker之类的
kolla-ansible -i ./all-in-one bootstrap-servers

# 2.对主机进行部署前检查
kolla-ansible -i ./all-in-one prechecks

# 3.开始部署OpenStack
kolla-ansible -i ./all-in-one deploy

注意:在进行第二步命令时如果报错,请执行以下命令进行规避。
如果遇到版本冲突则先卸载 重新安装

# 推出虚拟环境
deactivate
# 安装epel扩展源
yum install epel-release -y
# 安装新版pip
sudo dnf install python3-pip
sudo pip3 install -U pip
# 设置pip加速
pip config set global.index-url  https://mirrors.aliyun.com/pypi/simple/
# 使用pip安装一些python包
pip install requests
pip install docker
pip install websocket-client
# 进入到虚拟环境
mypip

部署结束

在上一步骤中第3小步在没有报错的情况下自动退出则代表部署完成,接下来对如何使用做一些说明:

# 安装openstack cli客户端
yum install -y centos-release-openstack-train
yum install -y python-openstackclient

# 生成openrc文件
kolla-ansible post-deploy
# 导入openrc中的环境变量
. /etc/kolla/admin-openrc.sh

以及简单的创建示例,比如网络、云主机等
注意:需要将命令中的IP、网段、镜像文件替换为自己的环境配置

# 创建外部网络
openstack network create --external --provider-physical-network physnet1         --provider-network-type flat public1
# 创建内部网络
openstack network create --provider-network-type vxlan demo-net
# 创建路由器
openstack router create demo-router
# 创建内部子网
openstack subnet create --subnet-range 10.0.0.0/24 --network demo-net     --gateway 10.0.0.1 --dns-nameserver 8.8.8.8 demo-subnet
# 创建外部子网
openstack subnet create --no-dhcp         --allocation-pool start=10.47.174.150,end=10.47.174.200  --network public1         --subnet-range 10.47.160.0/20 --gateway 10.47.160.1 public1-subnet
# 配置路由器外部网络接口
openstack router set --external-gateway public1 demo-router
# 配置路由器内部接口
openstack router add subnet demo-router demo-subnet
# 上传镜像
openstack image create --disk-format qcow2 --container-format bare --public     --property os_type=linux --file ./cirros-0.5.2-x86_64-disk.img cirros0.5.2
# 创建主机类型
openstack flavor create --id 1 --ram 512 --disk 1 --vcpus 1 m1.tiny
openstack flavor create --id 2 --ram 2048 --disk 20 --vcpus 1 m1.small
openstack flavor create --id 3 --ram 4096 --disk 40 --vcpus 2 m1.medium
openstack flavor create --id 4 --ram 8192 --disk 80 --vcpus 4 m1.large
openstack flavor create --id 5 --ram 16384 --disk 160 --vcpus 8 m1.xlarge
# 设置配额
# 40 instances
openstack quota set --instances 40 $(openstack project list | awk '/ admin / {print $2}')

# 40 cores
openstack quota set --cores 40 $(openstack project list | awk '/ admin / {print $2}')

# 96GB ram
openstack quota set --ram 96000 $(openstack project list | awk '/ admin / {print $2}')

# 创建云主机
openstack server create --image cirros0.5.2 --flavor m1.tiny --network demo-net  demo1
# 放通安全组
ADMIN_PROJECT_ID=$(openstack project list | awk '/ admin / {print $2}')
ADMIN_SEC_GROUP=$(openstack security group list --project ${ADMIN_PROJECT_ID} | awk '/ default / {print $2}')
openstack security group rule create --ingress --ethertype IPv4 --protocol icmp ${ADMIN_SEC_GROUP}
openstack security group rule create --ingress --ethertype IPv4 --protocol tcp --dst-port 22 ${ADMIN_SEC_GROUP}
openstack security group rule create --ingress --ethertype IPv4 --protocol tcp --dst-port 8000 ${ADMIN_SEC_GROUP}
openstack security group rule create --ingress --ethertype IPv4 --protocol tcp --dst-port 8080 ${ADMIN_SEC_GROUP}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kolla Ansible14.3.0基于虚拟环境部署 -ALL-IN-ONE版openstack 的相关文章

随机推荐