如何使用Ansible循环寄存器值?

如何使用Ansible循环寄存器值?,ansible,ansible-2.x,ansible-template,Ansible,Ansible 2.x,Ansible Template,我正在尝试grep多个目标主机上的进程的进程ID,并试图杀死该进程 到目前为止,我得到的是这个 - name: Grep any running process shell: ps aux | grep "[m]ongo*" | awk '{ print $2 }' register: mongod_running_processes with_items: - "{{ groups['primary-server-gb4'] }}" - "{{ groups['replic

我正在尝试
grep
多个目标主机上的进程的进程ID,并试图杀死该进程

到目前为止,我得到的是这个

- name: Grep any running process
  shell: ps aux | grep "[m]ongo*" | awk '{ print $2 }'
  register: mongod_running_processes
  with_items:
  - "{{ groups['primary-server-gb4'] }}"
  - "{{ groups['replication-servers-gb4'] }}"
现在我想终止目标主机中的进程

- name: Delete process
  shell: kill -15 {{ item }}
  with_items: "{{mongod_running_processes.results.stdout_lines}}"
这似乎不起作用



问:如何获取特定于目标的进程ID数组并杀死这些进程

也许你可以用一行程序终止进程,因为你已经在使用“shell” 模块:

替换:

shell: ps aux | grep "[m]ongo*" | awk '{ print $2 }'
用于:


忽略下面的任务。

也许您可以使用一行程序终止进程,因为您已经在使用“shell” 模块:

替换:

shell: ps aux | grep "[m]ongo*" | awk '{ print $2 }'
用于:


忽略下面的任务。

我完全不明白你想做什么。第一个任务中的循环没有任何意义。您没有在任何地方使用
项。您是否试图列出组中每台服务器上的这些进程?如果是,则缺少一个
委托给
子句。在这种情况下,你的第二个任务也没有任何意义。由于您在一台可能未运行任务的服务器上多次尝试终止所有任务(此外,由于
results
是一个列表,因此您循环的变量不存在)。我完全不明白您要做什么。第一个任务中的循环没有任何意义。您没有在任何地方使用
项。您是否试图列出组中每台服务器上的这些进程?如果是,则缺少一个
委托给
子句。在这种情况下,你的第二个任务也没有任何意义。因为您在一台可能没有运行任务的服务器上多次尝试终止所有任务(此外,由于
results
是一个列表,所以您循环的var不存在)。