apache-kafka - Ansible 角色需要在另一个角色的任务文件中间运行 - 如何创建可维护的剧本?
问题描述
我正在使用 Ansible 创建在主机上运行 Kafka 的角色。Kafka 作为 Podman 镜像运行,主机运行 RHEL 8。我还创建了一个角色,可以从镜像注册表(例如 Kafka、Zookeeper)镜像下载一组镜像。
Podman 的问题在于它需要代表运行图像的自定义用户从图像注册表中提取图像。
那里发生了母鸡和鸡蛋的问题。
- 我正在安装具有 Ansible 角色的 Kafka,该角色首先创建用户。
- 要安装 Kafka,我需要来自“图像注册表”角色的图像。
- 要提取图像,我需要来自 Kafka 角色的 Kafka 用户。
- 我在一个循环中。
在剧本中使用订单时:
roles:
- "image-registry-pull"
- "install-kafka"
在运行“install-kafka”之前我无法提取图像,因为用户还不存在。
使用顺序时:
roles:
- "install-kafka"
- "image-registry-pull"
我无法安装和运行 Kafka,因为这个角色的一部分正在启动一个需要图像的 pod。在尝试运行 Kafka pod 时,我没有图像。
如何拆分剧本以便:
- 从 Kafka 角色运行一组任务文件,同时安装用户
- 安装 Podman 镜像(当用户已经创建时)
- 恢复 Kafka 角色 - 使用已下载的图像启动 pod。
我在想一本剧本:
tasks:
- import_role:
name: install-kafka
tasks_from: kafka_user # To install user first
- import_role:
name: image-registry-pull # Pull images
- import_role:
name: install-kafka # Run role again (and attempt to create user again)
你认为这是一个好的解决方案吗?
如何创建易于维护的剧本?
解决方案
推荐阅读
- javascript - React SPA with Express Backend API - 将 JWT 存储在本地存储中并限制 API 仅访问 SPA 的 Web 服务器 IP
- reactjs - 使用 react 路由器和 react-swipeable -views 在标签更改时更改 url
- oop - 除了 Animals 和 Shapes 之外,还有什么动态多态性的真实用例?
- java - Scala中的Java反射,将参数传递给函数时出错
- c++ - 代码块主页不会加载?
- c++ - c++ getline() 似乎没有正确运行,直到最后才读取该行
- python - 确定天空中的月食
- c++ - CodeBlocks中定义的参数-Isrc在哪里?
- git - 如何删除从命令行创建的 github 存储库?
- kotlin - 在 Kotlin 中传递具有不同参数的函数列表