почему ansible всегда заменяет двойные кавычки одинарными кавычками в шаблонах?
Я пытаюсь создать Dockerfiles с Ansible template-см. Источник роли и шаблон в Ansible Galaxy и Github
мне нужно создать стандартную строку Dockerfile, например:
...
VOLUME ["/etc/postgresql/9.4"]
...
однако, когда я помещаю это во входной файл:
...
instruction: CMD
value: "["/etc/postgresql/{{postgresql_version}}"]"
...
в конечном итоге он отображается как:
...
VOLUME ['/etc/postgresql/9.4']
...
и я теряю " (что делает Dockerfiles бесполезными)
помочь ? Как мне убедить Джинджу не делать этого? заменить " с " ? Я пытался!--17-->" , |сейф фильтр, даже {%raw %} - он просто продолжает делать это!
обновление: Вот как воспроизвести проблему:
забрать peruncs.докер!--18--> роли galaxy.ansible.com или GitHub (ссылка дана выше) Написать простой playbook (say демо.в формате YML) С приведенным ниже контентом и запустите:ansible-playbook-v демонстрация.в формате YML. The - v опция позволит вам увидеть каталог temp, где генерируется Dockerfile идет с разбитым контентом, поэтому вы можете его изучить. Создание образа docker не важно для успеха, просто попробуйте получить Dockerfile правильно.
- name: Build docker image
hosts: localhost
vars:
- somevar: whatever
- image_tag: "blabla/booboo"
- docker_copy_files: []
- docker_file_content:
- instruction: CMD
value: '["/usr/bin/runit", "{{somevar}}"]'
roles:
- peruncs.docker
спасибо заранее!
1 ответов
что-то в Ansible, похоже, распознает это как действительный Python, поэтому он преобразуется в список Python, а затем сериализуется с помощью Python str()
, поэтому вы в конечном итоге получаете значения с одинарными кавычками.
простой способ обойти это-вставить пробел в начале значения, что, похоже, предотвращает его преобразование в Python:
- name: Build docker image
hosts: localhost
vars:
- somevar: whatever
- image_tag: "blabla/booboo"
- docker_copy_files: []
- docker_file_content:
- instruction: CMD
value: ' ["/usr/bin/runit", "{{somevar}}"]'
roles:
- peruncs.docker
в результате:
CMD ["/usr/bin/runit", "whatever"]