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 中的脚本
- 需要传递参数以确保使用 bash(不是 sh)(感谢 @U880D)
- 确保设置目标目录
所以在剧本中我 运行 脚本:
args:
executable:
/bin/bash
chdir:
/home/user/directory
在脚本的开头我有:
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 中的脚本
- 需要传递参数以确保使用 bash(不是 sh)(感谢 @U880D)
- 确保设置目标目录
所以在剧本中我 运行 脚本:
args:
executable:
/bin/bash
chdir:
/home/user/directory