好的..我走了。这是我的main.yml内容。
- hosts: web-servers
tasks:
- name: Run the below script
command: sh temp/myscript.sh
我有一个名为“myscript.sh”的shell脚本放在名为“temp”的目录下。我的目录层次结构是:
我不想将shell脚本复制到我的主机服务器并从thre运行。我想运行shell脚本,该脚本将与main.yml文件一起提供。
当我运行这个剧本时,我收到如下错误: stderr:sh:temp / myscript.sh:没有这样的文件或目录
请帮忙。
答案 0 :(得分:4)
如果你记住这一点,你会发现Ansible更简单:
Ansible模块在目标主机上运行。
如果你这样做:
- name: run some command
command: foo
然后该任务将尝试在Ansible连接的主机上运行命令foo
,而不是在您运行Ansible的主机上运行。{/ p>
如果要在本地运行任务,则需要明确说明。例如:
- hosts: web-servers
tasks:
- name: Run the below script
delegate_to: localhost
command: sh temp/myscript.sh
这使用delegate_to
指令运行此任务
localhost
而不是web-servers
主持此任务
通常会瞄准。
有关详细信息,请参阅the Ansible documentation on delegation。
答案 1 :(得分:1)
除了@larsks精确答案,local_action
是delegate_to: localhost
的简写。因此,这可能成为:
- hosts: web-servers
tasks:
- name: Run the below script
local_action: command sh temp/myscript.sh
使用same link作为参考。