首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ansible在命令任务中运行sh脚本

如何使用ansible在命令任务中运行sh脚本
EN

Stack Overflow用户
提问于 2016-04-28 01:52:45
回答 2查看 14.1K关注 0票数 5

好的..。我来了。这是我的main.yml内容。

代码语言:javascript
复制
- hosts: web-servers
  tasks:
    - name: Run the below script
      command: sh temp/myscript.sh

我有一个名为"myscript.sh“的shell脚本放在一个名为'temp‘的目录下。我的目录层次结构是:

  • 不可复制角色(目录)
    • main.yml
    • 临时(目录)
      • myscript.sh (我想运行这个Shell脚本)

我不想把shell脚本复制到我的主机服务器上,然后从主机服务器上运行。我想运行shell脚本,它将与main.yml文件一起使用。

当我运行这个剧本时,我会得到一个错误,例如:stderr: sh: temp/myscript.sh:没有这样的文件或目录

请帮我一下。

EN

回答 2

Stack Overflow用户

发布于 2016-04-28 02:48:52

如果你记住这一点,你会发现Ansible要简单得多:

不可访问模块在目标主机.上运行

如果你这样做:

代码语言:javascript
复制
- name: run some command
  command: foo

然后,该任务将尝试在Ansible连接的主机上运行命令foo,而不是在运行Ansible的主机上运行。

如果您想在本地运行一个任务,则需要明确这一点。例如:

代码语言:javascript
复制
- hosts: web-servers
  tasks:
    - name: Run the below script
      delegate_to: localhost
      command: sh temp/myscript.sh

这将使用delegate_to指令在localhost上运行此任务,而不是在该任务通常针对的任何web-servers主机上运行。

有关详细信息,请参阅关于授权的非议性文献

票数 8
EN

Stack Overflow用户

发布于 2016-04-28 07:37:30

此外,对于@larsks的精确答案,local_actiondelegate_to: localhost的简写。因此,这可能成为:

代码语言:javascript
复制
- hosts: web-servers
  tasks:
    - name: Run the below script
      local_action: command sh temp/myscript.sh

使用相同链接作为对此的引用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36903892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档