Я планирую самостоятельно принять 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>