在ansible中使用unix命令“ source”

时间:2019-05-29 21:12:39

标签: ansible

我有以下有趣的剧本:

runWithDotSlash.yml

---
 - hosts: user@myhost.local
   tasks:
   - name: try running a script with dot slash
     command: ./script.sh

runWithSource.yml

---
 - hosts: user@myhost.local
   tasks:
   - name: try running a script with source
     command: source script.sh

当我使用ssh进入user@myhost.local时,我被带到该用户的主目录,并且可以使用斜杠和源代码运行script.sh。但是,只有第一个剧本才有效。

我正在使用以下命令运行剧本:

ansible-playbook runWithDotSlash.yml
ansible-playbook runWithSource.yml

第二个显示以下错误消息:

FAILED! => {"changed": false, "cmd": "source script.sh", "msg": "[Errno 2] No such file or directory", "rc": 2}

这是script.sh,它位于myhost上用户的主目录中

#!/bin/bash
echo $1 > ansible_tempfile

为什么源不起作用?我该怎么做才能使其正常工作?

1 个答案:

答案 0 :(得分:3)

sourcebash命令。默认情况下,command模块使用sh。呼叫bash -c 'source script.sh'应该可以。