CentOS7.5 编译 Python3.6.8+OpenStack 私有云 API 运维 一、文章简介1. 适用场景本文内容完全提取 PPT 内所有标注截图 10-x.jpg 实操步骤无冗余理论废话适配职业院校云计算技能大赛私有云运维赛项、高校 LinuxOpenStack 上机实训。赛项核心需求Controller 节点离线 / 在线编译 Python3.6.8编写测试脚本、调用 OpenStack 原生 API 完成云资源自动化管理全部操作可直接截图提交实训报告、竞赛答题直接套用。2. 实验环境操作系统CentOS 7.5 1804VMware Workstation NAT 模式节点角色OpenStack all-in-one Controller 控制节点节点 IP192.168.1.241核心任务网络环境调试→YUM 软件源替换→离线 FTP 传输 Python 源码→源码编译安装 Python3.6.8→全局环境变量配置→Python 进度条测试程序→OpenStack Keystone V3 鉴权 API 开发3. 文章优势严格对应 PPT 每一张截图操作一步一命令无遗漏补充每一步操作目的、易错点、踩坑解决方案实训报告加分项区分在线下载、离线 FTP 两套 Python 安装包获取方案适配竞赛断网场景区分 Windows 端代码编写、Linux 终端运行两种 Python 脚本开发方式提供 OpenStack 原生 requests 鉴权代码为创建用户、创建云主机赛题打底格式规范可直接作为实训报告正文、CSDN 技术博客发布评分点全覆盖。二、截图 10-1配置 ens33 静态网卡打通虚拟机网络操作目的NAT 模式下配置固定静态 IP保证虚拟机与物理机互通、可访问外网是后续下载 Python、FTP 传输文件的基础。编辑网卡配置文件vi /etc/sysconfig/network-scripts/ifcfg-ens33完整配置参数DEVICEens33 TYPEEthernet BOOTPROTOnone ONBOOTyes IPADDR192.168.137.10 PREFIX24 GATEWAY192.168.137.1 DNS110.91.87.88易错点说明ONBOOTyes必须开启否则重启后网卡不自动启动BOOTPROTO 设置为 none禁用 DHCP固定 IP 避免 IP 变动导致 FTP、OpenStack 访问异常。三、截图 10-2配置 DNS 解析文件操作目的单独配置 DNS解决 yum 下载依赖、wget 下载 Python 源码域名解析失败问题。vi /etc/resolv.conf # 添加DNS服务地址 nameserver 10.91.87.88补充说明CentOS7 网卡重启会覆盖 resolv.conf如需永久生效可在网卡配置增加 DNS 字段本次实训临时配置满足需求。四、截图 10-3Windows 开启 VMnet8 ICS 网络共享操作目的虚拟机 NAT 模式无法直接上网时通过物理机网卡共享网络给 CentOS 提供外网访问通道。物理机本地网卡右键【属性】→切换至【共享】选项卡勾选「允许其他网络用户通过此计算机的 Internet 连接来连接 (N)」家庭网络连接下拉选择VMware Network Adapter VMnet8点击确定保存 ICS 共享配置。踩坑提示共享后 Windows 防火墙会拦截虚拟机流量后续需关闭 Linux 防火墙避免网络不通。五、截图 10-4核对网卡网关参数操作目的确认网关与 VMware 虚拟网卡网段一致防止跨网段无法访问外网、物理机 FTP。 核心配置字段GATEWAY192.168.1.254网关必须与 VMnet8 网段网关匹配否则 ping 外网全部丢包。六、截图 10-5重启网卡并验证外网连通操作目的网卡配置生效测试网络连通性确认外网可用后再执行后续 YUM、Python 下载操作。# 重启网络服务加载网卡配置 systemctl restart network # 外网连通测试 ping www.baidu.com判断标准持续收到数据包回复无请求超时代表网络配置全部完成。七、截图 10-6备份系统默认 YUM 源操作目的CentOS7.5 官方源已归档无法正常下载软件包先备份原有 repo 文件避免后续出错无法回滚。# 移动全部默认源文件至/opt目录备份 mv /etc/yum.repos.d/* /opt # 验证备份目录文件 ls /opt # 确认原repo目录已清空 ls /etc/yum.repos.d/八、替换清华 Vault CentOS7.5 软件源配套实训流程操作目的官方源失效使用清华镜像归档源适配 7.5.1804 版本保证 gcc、编译依赖完整下载。vi /etc/yum.repos.d/CentOS-Vault.repo完整源配置[C7.5.1804-base] nameCentOS-7.5.1804 - Base baseurlhttp://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.5.1804/os/$basearch/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1 [C7.5.1804-updates] nameCentOS-7.5.1804 - Updates baseurlhttp://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.5.1804/updates/$basearch/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1 [C7.5.1804-extras] nameCentOS-7.5.1804 - Extras baseurlhttp://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.5.1804/extras/$basearch/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1 [C7.5.1804-centosplus] nameCentOS-7.5.1804 - CentOSPlus baseurlhttp://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.5.1804/centosplus/$basearch/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1 [C7.5.1804-fasttrack] nameCentOS-7.5.1804 - fasttrack baseurlhttp://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.5.1804/fasttrack/$basearch/ gpgcheck1 gpgkeyfile:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 enabled1刷新缓存yum clean all yum makecache九、截图 10-7vsftpd 开启匿名上传配置离线传 Python 包操作目的竞赛环境断网无法 wget 下载 Python 源码搭建 FTP 服务物理机离线上传安装包。# 安装ftp服务 yum install vsftpd -y # 修改ftp配置文件 vi /etc/vsftpd/vsftpd.conf删除行首 #注释开启上传权限write_enableYES anon_upload_enableYES anon_mkdir_write_enableYES十、截图 10-8注释 vsftpd 本地用户 umask 配置操作目的关闭本地用户权限掩码限制避免匿名文件上传后权限异常无法解压。 编辑vsftpd.conf修改#local_umask022在行首添加 #注释屏蔽该配置。十一、截图 10-9授权 FTP 匿名上传目录权限操作目的匿名 ftp 用户默认无 pub 目录写入权限修改归属与权限支持拖拽上传文件。# 修改目录归属ftp用户组 chown ftp /var/ftp/pub # 开放全部读写执行权限 chmod 777 /var/ftp/pub # 查看目录权限验证配置生效 ll /var/ftp易错点权限不足会出现物理机拖拽文件报错777 为实训临时方案生产环境不推荐。十二、截图 10-10启动 FTP 服务、关闭防火墙与 SELinux操作目的放行 FTP21 端口关闭安全拦截策略保证物理机可正常访问ftp://192.168.137.10# 启动vsftpd服务 systemctl start vsftpd # 临时关闭SELinux永久关闭需修改配置文件 setenforce 0 # 关闭防火墙放行端口 systemctl stop firewalld物理机操作浏览器输入ftp://192.168.137.10将本地Python-3.6.8.tgz拖拽至 pub 文件夹完成上传。十三、截图 10-11解压 Python3.6.8 源码包操作目的将 FTP 上传的压缩包转移至编译目录解压源码用于后续编译安装。# 创建源码存放目录 mkdir /opt/ph # 复制FTP上传的压缩包到编译目录 cp /var/ftp/pub/* /opt/ph # 进入工作目录解压源码包 cd /opt/ph tar -xzf Python-3.6.8.tgz # 查看解压结果确认文件存在 ls输出结果Python-3.6.8 Python-3.6.8.tgz十四、截图 10-12安装编译依赖 编译 Python3.6.8操作目的Python 源码编译需要 gcc 编译器、ssl、zlib 等依赖库缺失会导致 pip、https 模块失效无法调用 OpenStack API。一键安装全套编译依赖yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make -y编译安装流程# 创建Python3安装目录 mkdir /usr/local/python3 # 进入解压后的源码目录 cd /opt/ph/Python-3.6.8 # 指定自定义安装路径 ./configure --prefix/usr/local/python3 # 编译安装虚拟机配置低会耗时10分钟以上 make make install实训重点--prefix指定自定义路径不和系统自带 Python2.7 冲突是私有云运维标准部署方式。十五、截图 10-13配置 Python 全局环境变量操作目的任意终端直接输入 python3 即可调用新版本无需写完整绝对路径。vi /etc/profile文件末尾追加两行环境变量配置export PYTHON/usr/local/python3 export PATH$PYTHON/bin:$PATH执行命令刷新配置永久生效source /etc/profile原理说明将 Python3 bin 目录前置到 PATH系统优先调用新版 Python不覆盖系统 python2 软链接不影响 OpenStack 原有服务运行。十六、Python3 环境验证操作目的校验编译、环境变量配置全部生效确认 Python3 可正常运行。 任意目录执行python3正常输出Python 3.6.8 (default,May 6 2024,21:57:18) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux Type help,copyright,credits or license for more information exit()输入 exit () 退出交互模式。十七、截图 10-14无中文进度条测试脚本Linux 兼容版操作目的编写基础 Python 程序验证语法、循环、time 库、格式化输出功能规避 Linux 中文编码报错。 文件名jdt.pypythonimport time wz 56 print(starting download.center(wz-3,)) for i in range(1,wz-61): jd i/(wz-6) ks1 **i js1 。*(wz-6-i) print(\r{:3.0%}[{}{}].format(jd,ks1,js1),end) time.sleep(0.1) print() print(download finished.center(wz-3,))开发说明PPT 支持两种编写工具Windows PyCharm/Notepad 编写后上传或 Linux vi 直接编写脚本去除全部汉字解决 CentOS 默认 ASCII 编码乱码问题。十八、截图 10-15执行 Python 测试脚本操作目的在 Controller 节点运行脚本完整验证 Python 运行环境可用。# 使用vi新建脚本粘贴代码 vi ~/jdt.py # 执行测试程序 python3 jdt.py运行效果终端动态刷新百分比进度条程序结束打印下载完成分割线代表 Python 环境搭建全部完成。十九、OpenStack Keystone V3 鉴权 API 代码实训赛题核心操作目的赛题任务 A 创建用户、任务 B 创建云主机前置鉴权步骤通过 requests 调用 Keystone 接口获取 Token后续所有 OpenStack 接口调用都需要该令牌。pythonimport json import requests import time try: # Keystone V3认证地址替换为本地Controller IP url http://192.168.1.241:5000/v3/auth/tokens body { auth:{ identity:{ methods:[password], password:{ user:{domain:{name:demo},name:admin,password:000000} } }, scope:{project:{domain:{name:demo},name:admin}} } } headers {Content-Type:application/json} resp requests.post(url,json.dumps(body),headersheaders) Token resp.headers[X-Subject-Token] headers {X-Auth-Token:Token} print(获取认证Token成功,Token) except Exception as e: print(f鉴权失败错误信息{str(e)}) exit(0)赛题拓展说明拿到 Token 后可扩展代码调用 Nova、Identity 接口实现赛题要求创建用户、查询云主机、删除同名云主机、新建 pvm1 云主机。三、实训常见问题汇总Python 编译缺失 ssl/zlib 模块原因yum 依赖未完整安装解决方案重新执行截图 10-12 的 yum 安装命令所有 devel 包缺一不可。FTP 无法上传文件原因未关闭防火墙 / SELinux、pub 目录权限不足对照截图 10-9、10-10 权限与服务配置修正。yum 下载软件 404 报错原因使用 CentOS7 最新源7.5 版本已归档解决方案使用 PPT 内清华 Vault 源。运行 Python 脚本中文乱码 / 报错原因Linux 默认无中文编码解决方案脚本全部使用英文截图 10-14 标准代码。OpenStack API 返回 401 无权限原因domain、project、用户名、密码、5000 端口防火墙拦截核对鉴权 body 内账号信息关闭 Linux 防火墙。四、实训总结本次实训完整完成 OpenStack Controller 节点 Python3.6.8 离线部署全流程严格按照 PPT 截图步骤完成网络调试、YUM 源替换、FTP 离线文件传输、源码编译、环境变量配置、Python 程序开发、OpenStack API 鉴权开发。 通过本次实操掌握了 Linux 静态网络配置、YUM 软件源管理、vsftpd 文件传输服务、Python 源码编译部署、RESTful API 调用私有云资源等核心运维技能理解了企业私有云自动化运维的基础开发环境搭建流程规避了编译缺失依赖、网络权限、编码、鉴权等典型故障具备独立完成云计算赛项 Python 自动化运维任务的能力。