-1

我有以下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}

这是 myhost 用户主目录中的 script.sh

#!/bin/bash
echo $1 > ansible_tempfile

为什么源不工作?我该怎么做才能让它发挥作用?

4

1 回答 1

3

source是一个bash命令。默认情况下,该command模块使用sh. 调用bash -c 'source script.sh'应该有效。

于 2019-05-29T21:27:21.700 回答