Есть ли какой-нибудь чистый способ добавить файл env_file к автоматически сгенерированному файлу docker? - PullRequest
0 голосов
/ 06 марта 2020

Я планирую самостоятельно принять Bitwarden , используя Ansible. Во время исполнения ansible playbook файловая иерархия и docker -композитный файл генерируются на пульте дистанционного управления на основе параметров файла конфигурации и других параметров. В конце этот docker файл выполняется для порождения контейнеров. Моя личная серверная инфраструктура уже обслуживает nginx -прокси в сочетании с letsencrypt . Чтобы использовать этот сервис, мне нужно добавить несколько определенных c параметров среды в "основной контейнер" в этом docker -композиционном файле. Я собрал их во внешний файл, и теперь мне нужно добавить этот внешний файл в файл docker. Я хочу сделать это динамически. До сих пор я использую задачу ansible:
- name: append nginx.env as env file to automatically generated docker file shell: 'sed -i "\$a\ \ \ \ \ \ - ../env/nginx.env" /srv/bitwarden/bwdata/docker/docker-compose.yml'

для преобразования:
... *OTHER CONTAINERS* ... nginx: ... *UNIMPORTANT PARAMETERS* ... env_file: - ../env/uid.env(EOF)
в
... *OTHER CONTAINERS* ... nginx: ... *UNIMPORTANT PARAMETERS* ... env_file: - ../env/uid.env - ../env/nginx.env(EOF)
Но я несчастлив с этим решением sed, потому что Bitwarden мог изменить этот автоматически сгенерированный файл (добавление в конец могло бы закончиться неудачей .. и я также не могу реально использовать любые regEx, потому что они могут изменить структуру отдельных компонентов файла et c ...).
Есть ли какой-нибудь встроенный безопасный способ ansible для достижения этого точного поведения?

РЕДАКТИРОВАТЬ: Я ищу что-то вроде:
match <container_name> append to env_file <../env/nginx.env>

...