kolla-ansible 安装 部署 openstack 开发 调试 环境
一、原理根据kolla-ansible的资料,其部署openstack开发环境的原理是,先在本地部署all-in-one的openstack可执行环境,在其基础上将需开发的项目源码clone到本地机器上,然后mount进相对应运行的容器,这样本地修改的代码将在容器中实时被执行,从而达到开发调试的目的。二、安装部署本地all-in-one环境1、安装环境VMWare虚拟机4核6G 40G硬盘软件..
一、原理
根据kolla-ansible的资料,其部署openstack开发环境的原理是,先在本地部署all-in-one的openstack可执行环境,在其基础上将需开发的项目源码clone到本地机器上,然后mount进相对应运行的容器,这样本地修改的代码将在容器中实时被执行,从而达到开发调试的目的。
二、安装部署本地all-in-one环境
1、安装环境
VMWare虚拟机4核6G 40G硬盘
软件
centos 7.8
python 2.7.5
pip 19.0.3
ansible 2.7.18
kolla 7.1.1
kolla-ansible 7.1.1.dev68 #对应openstack Rocky版本
docker 4.2.1
硬件
两块网卡
ens33 IP 192.168.44.91 内网,openstack的VIP
ens37 外网 不配IP
硬盘 40G /root 目录至少25G
2、安装步骤
2.1.关闭selinux
vi /etc/selinux/config
更改SELINUX选项为不可用
SELINUX=disabled
2.2.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 测试环境
2.3.更改hosts
192.168.44.91 localhost
# centos 默认主机名localhost如果更改,统一即可
3、安装docker容器
3.1.查询一下防火墙是否关闭
systemctl status firewalld
# 显示disable即为关闭,同时查看selinux=disable修改完毕
3.2.下载安装基本工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y wget vim net-tools
3.3.安装docker
# 安装docker官方yum源
wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 下载安装docker
sudo yum install -y docker-ce
#修改docker配置使用国内仓库,推荐使用阿里的
vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}# 启用docker服务
systemctl daemon-reload && systemctl enable docker && systemctl restart docker
3.4.测试docker是够正常运行
sudo docker run hello-world
4、配置docker容器
4.1.开启共享挂载
mkdir /etc/systemd/system/docker.service.d
tee /etc/systemd/system/docker.service.d/kolla.conf << 'EOF'
[Service]
MountFlags=shared
EOF
重启docker服务,使生效
systemctl daemon-reload
systemctl restart docker
5、安装kolla-ansible
5.1.下载安装基本工具
yum install -y epel-release
yum install -y python-pip
pip install -U pip==19.0.3 #版本过高不能使用~/.pip/pip.conf,原因不明
#依赖组件
yum install -y python-devel libffi-devel gcc openssl-devel libselinux-python git openldap-devel
yum install -y ansible
#配置pip国内源
mkdir ~/.pip
vim ~/.pip/pip.conf
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
[install]
trusted-host = https://pypi.tuna.tsinghua.edu.cn
5.2.下载kolla、kolla-ansible
git clone https://github.com/openstack/kolla
git clone https://github.com/openstack/kolla-ansible
5.3.切换到Train版本
cd kolla
git checkout -b train remotes/origin/stable/train
cd ../kolla-ansible
git checkout -b train remotes/origin/stable/train
5.4.安装kolla-ansible
# 先预装版本不匹配的包
pip install -U idna
pip install -I PyYAML
pip install Jinja2
# 安装kolla-ansible
cd kolla-ansible
pip install .
*安装过程中可能会提示各种组件版本兼容性问题,可以用pip install --ignore-installed <package>根据依赖关系强制安装
有些顽固的egg文件可以直接删除后再安装
使用 virtualenv建一个新环境会降低兼容性问题,但执行kolla-ansible时有docker moudle can't found.问题,原因可自行百度
5.5.配置kolla-ansible
vi /etc/ansible/ansible.cfg
修改一下选项
[defaults]
host_key_checking=False
pipelining=True
forks=100
6、配置OpenStack环境
6.1、复制kolla-ansible配置文件
cp -r kolla-ansible/etc/kolla /etc/kolla/
cp kolla-ansible/ansible/inventory/* .
正常部署来说,kolla-ansible的方式部署OpenStack所包含的配置文件存储路径是在/etc/kolla/文件目录下。OpenStack的服务容器启动时,会将此目录映射到容器里。
6.2.调整kolla-ansible全局配置
vi /etc/kolla/globals.yml
更改如下
kolla_install_type: "source" # 使用源码版本
openstack_release: "" #可不填kolla-ansible会根据当前版本自动下载
kolla_internal_vip_address: "192.168.44.91" # all-in-one部署,指定vip为管理网络网卡
network_interface: "ens33" # 管理网络、API网络的网卡
neutron_external_interface: "ens37" # 外部网络的网卡
enable_haproxy: "no" # all-in-one部署,不部署HA服务
nova_compute_virt_type: "qemu" # ---- 在物理机上部署时无需设置(默认kvm) ,仅在虚拟机中部署kolla-ansible-openstack时设置qemu
6.3、生成密码
kolla-genpwd
# 生成的文件在/etc/kolla/password.yml
vi /etc/kolla/password.yml
keystone_admin_password: 123 #OpenStack登录密码,原始密码哈希生成,记忆王者可以随意修改
7、部署OpenStack环境
7.1.检查
#基础环境检查
kolla-ansible -i all-in-one bootstrap-servers
#安装预检查
kolla-ansible -i all-in-one prechecks
7.2.部署安装
#提高部署的成功率,先下拉镜像
kolla-ansible -i all-in-one pull #用时比较长,视网络情况而定
#开始部署
kolla-ansible -i all-in-one -vvv deploy #开启详情检查方式,方便与部署过程中的排查
部署完成后,便可访问192.168.44.91访问dashboard, 这样本地all-in-one环境部署完成。
7.3.生成运行脚本
kolla-ansible post-deploy
运行脚本
source /etc/kolla/admin-openrc.sh
7.4.安装OpenStack命令行工具
# 先安装版本不匹配的组件
pip install -I ipaddress
# 安装命令行工具
pip install python-openstackclient python-glanceclient python-neutronclient
三、开发调试步骤
1、开启开发调试项目
本次以horizon项目为例比较直观,在/etc/kolla/globals.yml文件最后,加入
horizon_dev_mode: true
开启所有项目为
kolla_dev_mode: true
停止原openstack环境
kolla-ansible -i all-in-one stop --yes-i-really-really-mean-it
重新部署
kolla-ansible -i all-in-one deploy -vvv
*部署过程中kolla-ansible脚本会调用git将horizon项目源码clone到本地,若网络速度较慢可能出错,可使用git代理或其他办法
部署成功后,kolla-ansible会将horizon源码放入本地/opt/stack目录内
[root@localhost ~]# ll /opt/stack
总用量 8
drwxr-xr-x. 16 root root 4096 6月 27 17:40 heat
drwxr-xr-x. 11 root root 4096 6月 27 19:04 horizon
2、开发过程
使用vscode打开/opt/stack/horizon文件夹,便可进行开发工作
修改静态页面,保存后便可看到运行结果
刷新浏览器页面
3、设置断点调试
在文件中引入remote_pdb
from remote_pdb import RemotePdb
在断点处设置
RemotePdb('127.0.0.1', 4444).set_trace()
本例在project/overview处设置断点
为horizon容器安装remote_pdb组件
docker exec -it -u root horizon pip install remote_pdb
保存代码后,重启horizon容器
docker restart horizon
在浏览器中登录dashboard,发现日志停留在断点处
查看断点信息
socat readline tcp:127.0.0.1:4444
Pycharm vscode等图形编辑工具是否能直接使用容器内的断点,请参考文章
https://blog.csdn.net/wenwenxiong/article/details/51540518
https://zhuanlan.zhihu.com/p/43656542
四、碰到的问题
使用queens本版时,all-in-one环境部署成功,开启dev_mode后对应的容器不断重启,原因不明。
五、参考文章
https://docs.openstack.org/kolla-ansible/latest/contributor/kolla-for-openstack-development.html
更多推荐
所有评论(0)