Файл env модуля Ansible docker_container

У меня проблема с модулем docker_container для ansible (v2.3). Когда я пытаюсь передать свойства env_file в playbook, я получаю сообщение об ошибке: no such file or directory

---
- hosts: preprod-api
  become: yes
  gather_facts: true
  tasks:
    - name: test configuration
      docker_container:
        name: "backend"
        image: "backend"
        state: started
        exposed_ports:
          - 80
        volumes:
          - /opt/application/i99/current/logs
        user: ansible
        env_file: 
          - "/opt/application/i99/current/backend/backend-PreProd-config.list"

Я пробовал с файлом, существующим на доступном сервере, и на целевом сервере с тем же результатом.

вот ошибка:

`fatal: [my_hostname]: FAILED! => {"changed": false, "failed": true, "module_stderr": "Shared connection to my_hostname closed.\r\n", 
"module_stdout": "Traceback (most recent call last):
    File \"/tmp/ansible_rySqS2/ansible_module_docker_container.py\", 
    line 2036, in <module>    main() File \"/tmp/ansible_rySqS2/ansible_module_docker_container.py\", 
    line 2029, in main\r\n    cm = ContainerManager(client)  File \"/tmp/ansible_rySqS2/ansible_module_docker_container.py\", 
    line 1668, in __init__\r\n    self.parameters = TaskParameters(client)\r\n  File \"/tmp/ansible_rySqS2/ansible_module_docker_container.py\", 
    line 784, in __init__\r\n    self.env = self._get_environment()\r\n  File \"/tmp/ansible_rySqS2/ansible_module_docker_container.py\", 
    line 1134, in _get_environment\r\n    parsed_env_file = utils.parse_env_file(self.env_file)\r\n  File \"/usr/lib/python2.7/site-packages/docker/utils/utils.py\", 
    line 961, in parse_env_file with open(env_file, 'r') as f:\r\nIOError: [Errno 2] No such file or directory: \"['/path/to/my/file/that/exist/backend-PreProd-config.env']\"\r\n", "msg": "MODULE FAILURE", "rc": 0}`

Итак, мой вопрос: как я могу передать файл env?


person zeO_340    schedule 12.06.2017    source источник


Ответы (3)


так я нашел проблему. сначала синтаксис:

env_file: /local/dir/some/file.env

файл должен быть расположен на целевом сервере и не должен содержать пустых строк или пробелов в первом символе.

person zeO_340    schedule 14.06.2017
comment
Было бы полезно, если бы вы показали здесь файл переменной среды. - person Muhammad Tariq; 27.01.2021

env_file должен быть локальным для вашего хоста, а не файлом внутри контейнера.

env_file: 
      - "/local/dir/some/file.env"
person Robert    schedule 12.06.2017
comment
Спасибо за ответ. Я пробовал это, но я получаю сообщение об ошибке «Нет такого файла или каталога», даже если файл существует. - person zeO_340; 14.06.2017
comment
@zeO_340 zeO_340, этот файл должен быть в док-контейнере, чтобы его можно было забрать? - person Muhammad Tariq; 27.01.2021

Чтобы добавить полезную информацию к принятому ответу.

Вот как вы можете написать файл переменной среды.

мой файл.env

USER=ElonMusk
PASSWORD=EV
DATABASE=Tesla
person Muhammad Tariq    schedule 31.01.2021