这个问题可能是由于使用Bash脚本中的特殊字符或语法错误导致的。为了克服这个问题,可以尝试使用ANSIBLE的command
或shell
模块,而不是在Bash脚本中执行命令。例如:
- name: Start docker-compose with pipes, flocks, and in the background
shell: >
docker-compose up --build \
| flock -n /tmp/my_lockfile \
| tee /tmp/output.log &
args:
chdir: /path/to/compose/files
此示例使用Ansible的shell
模块,将整个命令行作为一个字符串传递。使用重定向操作符与tee
命令同时将输出写入日志文件,并使用flock
命令控制执行流程。
最后,在args
部分可以使用chdir
参数指定docker-compose.yml
文件所在的目录。
这样,可以避免Bash脚本中的一些问题,并使Ansible更容易地控制命令执行和异步结果。