我正在设置Ansible角色来安装Ahsay Offsite Backup Server。
下载并解压缩包含该软件的压缩文件后,我需要运行安装脚本。我已经确定它是脚本中的早期步骤,它会检查您当前的用户是否具有无法运行的适当权限。
当我运行剧本时,最后的任务永远不会结束。
角色
- name: Check if OBS install files have already been downloaded
stat:
path: /tmp/obs/version.txt
register: stat_result
- name: Ensures /tmp/obs exists
file: path=/tmp/obs state=directory
- name: Download and extract OBS install files
unarchive:
src: https://ahsay-dn.ahsay.com/v6/obsr/62900/obsr-nix.tar.gz
dest: /tmp/obs
remote_src: true
validate_certs: no
when: stat_result.stat.exists == false
- name: Install OBS
command: bash -lc "/tmp/obs/bin/install.sh > /tmp/install_output.log"
playbook配置适用于所有任务成为sudo。
如果我在远程主机上的shell中运行该命令,它将成功执行。
在命令失败之前我遇到了类似的问题,因为(在rvm的情况下)它需要bash_profile首先加载并引入一堆环境变量。正如我上面所做的那样修复,将命令包装在bash -lc "..."
中,但这次没有帮助。
我很喜欢有关如何继续排除故障的建议。
答案 0 :(得分:1)
/proc/${PID}
文件夹(如果您使用的是Linux),也可以连接到它通过strace -p ${PID}
并可能重复它的stderr,看看它是否可以打印出对你有用的东西。此外,您实际上不必运行command
,可以使用shell
模块,并指定其args以确保命令从特定文件夹运行,如下所示:
- name: Install OBS
shell: |
./bin/install.sh \
1> /tmp/install.output.log \
2> /tmp/install.error.log
args:
executable: /bin/bash
chdir: /tmp/obs