python - 跨多个文件(Docker、Python、Ansible 和 Bash)应用用户配置值的最佳方法?
问题描述
项目描述:我有一个项目使用 Docker Swarm 为分布式应用程序创建一个基础设施来运行。该应用程序由 Python 和 bash 文件组成(一切都是面向 Linux 的)。为了引导整个项目,我使用 Ansible 构建容器、推送文件并验证每个目标 Swarm 节点上的环境。
问题:因为这是一个我试图让精通技术的人(相对)用户友好的应用程序,所以我希望只有一个他们可以填写的配置文件。但是我对如何获取这些值(其中一些在 Bash/Python/Docker 中相互依赖)并实际填写实际值有些困惑。
解决这个问题的最佳方法是什么?我一直在考虑制作一些 Ansible 启动的 Python 解析器来填充所有内容,但我一直不愿意跳上去。
解决方案
Python、Docker 和 Ansible 都至少具有对环境的读取权限。export
从 Bash 中获取变量,然后从每个应用程序独立访问它们。我会认真努力尽量减少相互依赖,因为我不知道您可以从这些应用程序写入环境。
编辑:Bash 不支持env
Ironmental 数组,但是,您可以导出分隔字符串,而不是用许多相关变量阻塞您的环境:
export my_string='key=value:user=Bob:multiple_keys=one,two,three'
这是一个良好的计划和文档的练习。仔细考虑这个字符串将如何随着脚本的发展而增长。
有关$ env |awk '/^(PATH|LS_COLORS)=/' ORS=\\n\\n
分隔字符串的两个本机示例,请参阅。
推荐阅读
- php - Wordpress 插件 HTML Bootstrap + PHP
- javascript - javascript多重赋值中未定义的console.log
- flutter - 即使 Flutter 中父小部件的高度为零,图标仍会显示
- javascript - 使用通过 useContext 传递的旧状态值反应 Hook 组件
- php - 如何在 Codeception 中使用 Stub::update?
- python - 在pyhton(networkx)中有一个有向图,是否可以根据节点属性的特定条件创建子图?
- c++ - 如何使带有可变参数模板的工厂方法也可以动态工作?
- windows - Git Clone 适用于 CMD 但不适用于 PowerShell
- r - reactiveValues 与反应性;从 tabPanel [R Shiny] 延迟加载
- typescript - 为什么我们可以将具有更多属性的接口分配给另一个具有更少属性的接口?