Лучший способ применения значений конфигурации пользователя для нескольких файлов (Docker, Python, Ansible и Bash)? - PullRequest
0 голосов
/ 27 апреля 2019

Описание проекта: У меня есть проект, который использует Docker Swarm для создания инфраструктуры для запуска распределенного приложения. Это приложение состоит из файлов Python и bash (все ориентировано на Linux). Чтобы загрузить весь этот проект, я использую Ansible для создания контейнеров, перемещения файлов и проверки сред на каждом целевом узле Swarm.

Проблема: Поскольку это приложение, которое я пытаюсь сделать (относительно) удобным для пользователей, обладающих техническими знаниями, я хотел бы иметь только один файл конфигурации, который они могут заполнить. Но я немного застрял в том, как затем взять эти значения (некоторые из которых являются взаимозависимыми в Bash / Python / Docker) и фактически заполнить реальные значения.

Какой лучший способ подойти к этому? Я думал о создании нескольких парсеров Python, которые Ansible запускает, чтобы заполнить все, но я не хотел на это прыгать.

1 Ответ

0 голосов
/ 27 апреля 2019

Python, Docker и Ansible имеют как минимум доступ для чтения к среде.export ваши переменные из Bash, затем обращайтесь к ним независимо от каждого приложения.Я бы приложил серьезные усилия к минимизации взаимозависимости, поскольку я не знаю, что вы можете писать в среду из этих приложений.

edit: Bash не поддерживает env железных массивов, но вместо того, чтобы засорятьВ вашей среде со многими связанными переменными вы можете экспортировать строки с разделителями:

export my_string='key=value:user=Bob:multiple_keys=one,two,three'

Это упражнение в хорошем планировании и документации.Тщательно продумайте, как эта строка будет расти по мере развития вашего скрипта.

См. $ env |awk '/^(PATH|LS_COLORS)=/' ORS=\\n\\n для двух собственных примеров строк с разделителями.

...