在 ansible 中使用 unix 命令 "source"
using the unix command "source" in ansible
我有以下 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 > ansible_tempfile
为什么源不工作?我该怎么做才能让它发挥作用?
source
是一个 bash
命令。默认情况下,command
模块使用 sh
。调用 bash -c 'source script.sh'
应该可以。
我有以下 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 > ansible_tempfile
为什么源不工作?我该怎么做才能让它发挥作用?
source
是一个 bash
命令。默认情况下,command
模块使用 sh
。调用 bash -c 'source script.sh'
应该可以。