项目描述:我有一个项目,它使用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
。