Ansible docker_容器模块环境文件

Ansible docker_容器模块环境文件,docker,ansible,docker-container,Docker,Ansible,Docker Container,我对ansible(v2.3)的docker_容器模块有一个问题。当我试图在playbook中传递env_文件属性时,我得到错误:没有这样的文件或目录 --- - hosts: preprod-api become: yes gather_facts: true tasks: - name: test configuration docker_container: name: "backend" image: &

我对ansible(v2.3)的docker_容器模块有一个问题。当我试图在playbook中传递
env_文件
属性时,我得到错误:
没有这样的文件或目录

---
- 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"
我尝试了ansible服务器上的一个文件和目标服务器上的一个文件,结果相同

以下是错误:

`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}`
`fatal:[我的主机名]:失败!=>{“更改”:false,“失败”:true,“模块\u stderr”:“与我的\u主机名的共享连接已关闭。\r\n”,
“模块”:“回溯(最近一次呼叫):
文件\“/tmp/ansible\u rySqS2/ansible\u module\u docker\u container.py\”,
第2036行,在main()文件\“/tmp/ansible\u rySqS2/ansible\u module\u docker\u container.py\”中,
第2029行,在主\r\n cm=ContainerManager(客户端)文件\“/tmp/ansible\u rySqS2/ansible\u module\u docker\u container.py\”中,
第1668行,在“\uuuu init\uuuu\r\n self.parameters=TaskParameters(client)\r\n File\”/tmp/ansible\u rySqS2/ansible\u module\u docker\u container.py\”中,
第784行,在文件“/tmp/ansible\u rySqS2/ansible\u module\u docker\u container.py”中,self.env=self.\u get\u environment()\r\n,
第1134行,在\u get\u environment\r\n parsed\u env\u file=utils.parse\u env\u file(self.env\u file)\r\n file\“/usr/lib/python2.7/site packages/docker/utils/utils.py\”中,
第961行,将打开的环境文件(环境文件,'r')解析为f:\r\nIO错误:[Errno 2]没有这样的文件或目录:\“['/path/to/my/file/that/exist/backend-prepod-config.env']\”\r\n,“msg”:“模块故障”,“rc”:0}`

所以我的问题是,如何传递env文件?

env_文件必须是主机的本地文件,而不是容器中的文件

env_file: 
      - "/local/dir/some/file.env"
所以我发现了问题。 首先,语法是:

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

文件必须位于目标服务器上,并且在第一个字符中不包含空行或空格。

为接受的答案添加一些有用的信息

以下是如何编写环境变量文件

myfile.env
USER=ElonMusk
密码=EV
数据库=特斯拉

谢谢你的回答。我试过了,但我得到了一个“没有这样的文件或目录”的错误,即使当文件existe@zeO_340,该文件是否应该放在docker容器中才能提取?如果在此处显示环境变量文件,将非常有用。