千里不留行_ 2023-01-04 13:51 采纳率: 29.4%
浏览 20

ansible shell 使用问题

用ansible 执行如下shell 命令,显示启动成功,但是我到目标主机查看却是没有启动(有点不理解为什么)

img

img

然后我直接到目标主机手动执行,可以启动,有点怪,为什么ansible 不行

img

然后我在运维主机使用service 启动,居然启动成功

img

img

而用shell 模块,控制机显示成功,但是目标主机上还是没有启动

img

img

  • 写回答

3条回答 默认 最新

  • 陌北v1 Python领域优质创作者 2023-01-04 14:07
    关注

    如果你使用 Ansible 执行 shell 命令,但是却没有在目标主机上看到期望的结果,那么可能是因为以下原因之一:

    1. 你的 shell 命令写错了,导致执行失败。建议检查你的命令是否有语法错误,并确保命令的路径正确。
    2. 你的 shell 命令依赖于环境变量,但是 ansible 执行命令时并没有设置这些变量。建议使用 ansible 的 environment 变量来设置环境变量。
    3. 你的 shell 命令依赖于一些文件或目录,但是这些文件或目录在目标主机上并不存在。建议使用 ansible 的 copy 模块将这些文件或目录拷贝到目标主机上。
    4. 你的 shell 命令依赖于一些软件包,但是这些软件包在目标主机上没有安装。建议使用 ansible 的 package 模块安装这些软件包。
    5. 你的 shell 命令需要使用 root 权限执行,但是 ansible 并没有以 root 身份执行命令。建议使用 ansible的 become 变量来以 root 身份执行命令。例如:
    - name: run a command as root
      shell: /path/to/command
      become: yes
    

    另外,如果你使用的是 ansible 的 command 模块,而不是 shell 模块,你可以使用 executable 变量来指定执行命令的 shell。例如:

    - name: run a command as root
      command: /path/to/command
      become: yes
      executable: /bin/bash
    

    还有,如果你使用的是 ansible 的 shell 模块,你可以使用 args 变量来传递参数给 shell。例如:

    - name: run a command as root
      shell: /path/to/command
      args:
        chdir: /path/to/working/directory
        executable: /bin/bash
      become: yes
    

    希望这些建议能帮助你解决你的问题。

    评论

报告相同问题?

问题事件

  • 修改了问题 1月4日
  • 修改了问题 1月4日
  • 修改了问题 1月4日
  • 创建了问题 1月4日

悬赏问题

  • ¥15 is not in the mmseg::model registry。报错,模型注册表找不到自定义模块。
  • ¥15 安装quartus II18.1时弹出此error,怎么解决?
  • ¥15 keil官网下载psn序列号在哪
  • ¥15 想用adb命令做一个通话软件,播放录音
  • ¥30 Pytorch深度学习服务器跑不通问题解决?
  • ¥15 部分客户订单定位有误的问题
  • ¥15 如何在maya程序中利用python编写领子和褶裥的模型的方法
  • ¥15 Bug traq 数据包 大概什么价
  • ¥15 在anaconda上pytorch和paddle paddle下载报错
  • ¥25 自动填写QQ腾讯文档收集表