我正在研究一些我在Docker容器中设置的Ansible东西。从Linux系统运行时,它运行良好。从Windows系统运行时,我收到以下错误:
ERROR! Problem running vault password script /etc/ansible-deployment/secrets/vault-dev.txt ([Errno 8] Exec format error). If this is not a script, remove the executable bit from the file.
基本上这就是说文件被标记为可执行文件。我注意到的(直到现在还没有出现过大问题)是从windows安装到linux容器的所有文件总是用可执行属性标记。
有没有办法控制/防止这种情况?
答案 0 :(得分:0)
您是否尝试在已安装路径的末尾添加:ro
?
这样的事情:
HOST:CONTAINER:ro
答案 1 :(得分:0)
这是Docker for Windows使用的基于SMB的方法的局限性,用于使主机安装的卷正常工作,请参阅here
要解决executable bit
错误,我最终将Ansible的python脚本作为--vault-password-file参数作为传递方法来解决,请参见here。
#!/usr/bin/env python
import os
vault_password = open('PATH_TO_YOUR_VAULT_PASSWORD_FILE', 'r')
print vault_password.read()
vault_password.close()
由于在容器中执行了python脚本,因此需要在容器中访问Vault密码文件路径-我将其作为卷安装,但是您也可以将其构建到映像中。后者是安全隐患,不建议使用。