当前位置: 首页 > news >正文

构建专属执行环境:awx-on-k3s自定义Ansible EE完整教程

构建专属执行环境:awx-on-k3s自定义Ansible EE完整教程

【免费下载链接】awx-on-k3sAn example implementation of AWX on single node K3s using AWX Operator, with easy-to-use simplified configuration with ownership of data and passwords.项目地址: https://gitcode.com/gh_mirrors/aw/awx-on-k3s

awx-on-k3s是基于K3s单节点部署AWX的开源项目,通过AWX Operator实现简化配置,让用户完全掌控数据和密码。本文将带你一步步构建专属的Ansible执行环境(EE),轻松定制满足特定需求的自动化运行环境。

为什么需要自定义Ansible EE?

Ansible执行环境(Execution Environment)是包含Ansible运行所需全部依赖的容器镜像,自定义EE能带来三大核心优势:

  • 环境一致性:确保开发、测试和生产环境完全一致,消除"在我电脑上能运行"的问题
  • 依赖隔离:不同项目的依赖互不干扰,避免版本冲突
  • 安全合规:仅包含必要组件,减少攻击面,满足企业安全要求

awx-on-k3s项目提供了完整的EE构建框架,位于项目的builder/目录下,通过简单配置即可生成专属执行环境。

自定义Ansible EE的核心组件

在开始构建前,先了解awx-on-k3s中EE构建的核心文件结构:

1. 执行环境定义文件

builder/execution-environment.yml是EE构建的主配置文件,定义了基础镜像、依赖和构建步骤。关键配置项包括:

  • 基础镜像:指定底层操作系统镜像,默认使用quay.io/centos/centos:stream9-minimal
  • Python解释器:设置Python版本和路径,默认为Python 3.11
  • 依赖管理:声明系统依赖、Python包和Ansible Galaxy集合的来源
  • 构建步骤:添加自定义命令,如设置Python alternatives或配置Ansible

2. 依赖文件集合

EE的依赖通过三个文件管理,位于builder/dependencies/目录:

  • system依赖bindep.txt定义系统级依赖包
  • Python依赖requirements.txt声明Python模块,默认包含示例包example-pypi-package
  • Ansible集合requirements.yml指定Ansible Galaxy集合,默认包含community.general:7.0.0

从零开始自定义Ansible EE的步骤

准备工作:安装必要工具

在开始构建前,确保系统已安装:

  • Docker或Podman
  • Ansible Builder
  • Git

克隆awx-on-k3s项目到本地:

git clone https://gitcode.com/gh_mirrors/aw/awx-on-k3s cd awx-on-k3s/builder

步骤1:修改执行环境定义

编辑builder/execution-environment.yml文件,根据需求调整配置:

  1. 更换基础镜像:如需使用不同的基础镜像,修改images.base_image.name
  2. 调整Python版本:修改dependencies.python_interpreter下的配置
  3. 添加构建步骤:在additional_build_steps中添加自定义命令,如安装特定工具

例如,如需添加自定义CA证书,可在append_final部分添加:

append_final: - COPY custom-ca.crt /etc/pki/ca-trust/source/anchors/ - RUN update-ca-trust

步骤2:管理依赖项

根据项目需求更新依赖文件:

  1. 系统依赖:编辑builder/dependencies/bindep.txt,添加所需系统包,格式为:

    openssh-clients [platform:rpm] git [platform:rpm]
  2. Python依赖:修改builder/dependencies/requirements.txt,添加所需Python包:

    requests>=2.25.0 pywinrm>=0.4.3
  3. Ansible集合:更新builder/dependencies/requirements.yml,添加所需集合:

    collections: - name: community.general version: 7.0.0 - name: ansible.posix version: 1.5.4

步骤3:构建执行环境镜像

完成配置后,使用Ansible Builder构建镜像:

ansible-builder build -t custom-awx-ee:latest

构建过程会自动:

  1. 拉取基础镜像
  2. 安装系统依赖
  3. 设置Python环境
  4. 安装Python包和Ansible集合
  5. 执行自定义构建步骤
  6. 生成最终镜像

步骤4:在AWX中使用自定义EE

构建完成后,有两种方式在awx-on-k3s中使用自定义EE:

  1. 本地镜像:将镜像推送到项目中的私有仓库(registry/目录提供了本地仓库配置)
  2. 更新AWX配置:修改base/awx.yaml中的执行环境设置,指定自定义镜像

高级定制技巧

添加自定义Ansible配置

项目提供了builder/files/ansible.cfg文件,可在此添加全局Ansible配置,如:

[defaults] timeout = 30 remote_user = ansible

配置会在构建过程中自动复制到EE中,位于~/.ansible.cfg

多阶段构建优化

通过additional_build_steps的不同阶段(prepend_base、append_galaxy等),可以实现复杂的构建逻辑:

  • prepend_base:基础镜像准备阶段
  • append_galaxy:Galaxy集合安装后
  • append_final:最终镜像打包前

版本控制与测试

建议为EE配置创建版本控制,可通过修改execution-environment.yml中的版本号实现:

version: 3

每次修改后,建议进行测试:

ansible-builder build --tag custom-awx-ee:v1.0 ansible-runner run --container-image custom-awx-ee:v1.0 demo-playbook.yml

故障排除与常见问题

构建失败怎么办?

  1. 检查依赖文件格式是否正确,特别是YAML文件的缩进
  2. 确认网络连接正常,能够访问镜像仓库和Galaxy
  3. 查看构建日志,定位具体错误阶段

如何减小镜像体积?

  1. 使用更小的基础镜像,如Alpine版本(需注意兼容性)
  2. 在构建后期清理缓存和临时文件:
    append_final: - RUN microdnf clean all && rm -rf /var/cache/microdnf

自定义EE不生效?

  1. 确认AWX已正确配置使用新镜像
  2. 检查镜像是否已推送到AWX可访问的仓库
  3. 查看AWX任务日志,确认是否有镜像拉取或运行错误

总结

通过awx-on-k3s项目提供的builder/框架,自定义Ansible执行环境变得简单高效。无论是添加特定依赖、配置企业安全策略,还是优化运行环境,都能通过修改几个关键文件轻松实现。

现在,你已经掌握了构建专属Ansible EE的完整流程,快去尝试定制满足自己需求的执行环境吧!如有更多高级需求,可参考项目tips/目录下的文档,获取更多专业技巧。

【免费下载链接】awx-on-k3sAn example implementation of AWX on single node K3s using AWX Operator, with easy-to-use simplified configuration with ownership of data and passwords.项目地址: https://gitcode.com/gh_mirrors/aw/awx-on-k3s

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/1302337/

相关文章:

  • 3个步骤掌握幻兽帕鲁存档编辑:解锁游戏数据自定义的终极指南
  • 5分钟搞定Figma中文界面:设计师的母语工作流终极指南
  • 爆料!12月PMP新考纲首考或是“最容易过”的一次?AI和ESG首次入题怎么考?
  • 七月三十一
  • TVBoxOSC电视盒子完整部署指南:3步打造免费家庭媒体中心
  • Agentic AI从Demo到团队:我花三个月才搞懂的权限和日志
  • 下一代边缘推理框架技术方向展望:统一 IR、图编译与硬件自动调优的融合趋势
  • 一文看懂江门企业类型变更公司口碑好排行:江门机构实力排行与适配解析 - GrowUME
  • 如何用AI多智能体构建你的专业股票分析系统:3种方案快速上手
  • 深度探索VQEngine的线程同步机制:渲染与更新的完美协作
  • DamaiHelper终极指南:告别手速限制,用自动化技术轻松抢到心仪演出票
  • 2026免费微信投票小程序实测对比|多场景工具选型避坑指南
  • 北京产业园哪家适合小微企业注册:【博亚信诚】适配小微 - 17728181569
  • 30KG重载机器人测评:从柔性力控 恒力打磨出发,越疆智能拉开优势
  • 7 月总结:LLM 工作流自动化的探索与反思——从兴奋到冷静的工程沉淀
  • 图片去水印别再花钱找人了:5种方法全攻略,第3种小白也能30秒搞定
  • 上海黄金回收实体门店白名单参考|市场整治持续推进,出手黄金优先选备案商家 - 日常比对手册
  • 嵌入式 Linux 未来形态探讨:容器化、原子更新与不可变基础设施在边缘的实践展望
  • 5步搞定Windows启动盘:WinDiskWriter终极指南
  • 2026常州黄金回收市场实测,合规门店甄选全攻略 - 一日一测评
  • Twitter API v2集成实战:Twitter, together!开发指南
  • 论文复现-2026-7-30
  • wheelnav.js开发者指南:自定义spreader与marker打造独特导航体验
  • 北京产业园代办哪家正规:【博亚信诚】合规靠谱 - 18102756859
  • 文心一言搜索增强效果提升273%的7个关键配置参数(内部灰度测试未公开版)
  • 3分钟搞定!PingFangSC苹果平方字体完整免费解决方案,让Windows也能享受Mac级中文排版体验
  • 终极Windows窗口调整工具:5个真实场景下的完整解决方案指南
  • 2026|合肥理工学校老师电话是多少?热门专业怎么去选择? - zshll
  • 飞书文档批量导出终极指南:一键备份知识库的高效解决方案
  • 北京产业园哪家注册费用低:【博亚信诚】资费亲民 - 17328623207