【问题标题】:List running java processes in a linux host via ansible playbook通过 ansible playbook 列出 Linux 主机中正在运行的 java 进程
【发布时间】:2019-12-31 17:28:13
【问题描述】:

我想列出在上述主机中运行的 java 进程。但是我没有得到想要的 o/p

已经创建了一个 ansible-playbook 文件来读取 shell 命令。

 name: 'Check the running java processes'
 hosts: all
 tasks:
   - name: 'check running processes'
     shell: ps -ef | grep -i java```

output: PLAY [Check the running java processes] ****************************************

TASK [setup] *******************************************************************
ok: [target1]
ok: [target2]

TASK [check running processes] *************************************************
changed: [target1]
changed: [target2]

PLAY RECAP *********************************************************************
target1                    : ok=2    changed=1    unreachable=0    failed=0   
target2                    : ok=2    changed=1    unreachable=0    failed=0   

However, it's not listing the processes.

【问题讨论】:

  • 我现在无法测试它,但也许命令会比 shell 更好。我的想法是 shell 将有自己的标准输出与 ansible 登录分开
  • @Terry: command 模块会因为 OP 命令中的管道而引发错误 -> The command(s) will not be processed through the shell, so variables like $HOME and operations like "<", ">", "|", ";" and "&" will not work. Use the shell module if you need these features.。此外,即使使用更简单的命令,它也不会改变当前的问题。

标签: ansible


【解决方案1】:

您可以通过在详细模式下运行 ansible 来查看实际剧本的结果。

但是,执行此操作的好方法是 register 任务的输出并在调试任务中显示其内容(或在任何其他任务/循环中使用它)。

要了解您注册的 var 的样子,您可以阅读有关 commonshell's specific 返回值的文档...或者您可以简单地在您的剧本中调试完整的 var 并查看它。

这里是一个示例,只是为了获取命令的完整 stdout

---
- name: Check the running java processes
  hosts: all
  tasks:
    - name: Check running processes
      shell: ps -ef | grep -i java
      register: ps_cmd

    - name: Show captured processes
      debug:
        var: ps_cmd.stdout

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    • 2020-09-07
    相关资源
    最近更新 更多