Ansible:为什么当 运行 通过 ansible 时此脚本不会记录?

Ansible: Why won't this script log when run through ansible?

在脚本的开头我有:

exec 3>&1 4>&2
trap 'exec 2>&4 1>&3' 0 1 2 3
exec 1>patch_log.out 2>&1 

(来自 https://serverfault.com/questions/103501/how-can-i-fully-log-all-bash-scripts-actions

当脚本在终端中为 运行 时,它会给出我期望的日志文件 patch_log.out 但是当 运行 使用 shell 模块从 ansible 中调用脚本时它不会(但我知道脚本的其余部分工作正常)

我想这与我对 exec 工作原理的理解有关,以及我如何让它通过 ansible 工作

运行 Ansible 中的脚本

  1. 需要传递参数以确保使用 bash(不是 sh)(感谢 @U880D)
  2. 确保设置目标目录

所以在剧本中我 运行 脚本:

args:
  executable:
    /bin/bash
  chdir:
    /home/user/directory