我写了一个小的playbook来检查主机上是否正在运行给定的进程。我写的如下:
- name: checking process running for clients and start process when not
service:
name: marketaccess {{ item.key|lower }} -vi
state: started
register: process
with_dict: "{{ customers }}"
当字典的item.key = BROADWAY时,我想检查的过程如下:
但是当我运行这个剧本时,报告的错误是:
无法找到所请求的服务marketacces broadway -vi:host
请有人知道我做错了吗?
答案 0 :(得分:2)
我使用过pgrep,因为“ps -ef”输出在服务器之间有所不同(至少在我的情况下)。
- name: "Get process PID"
shell: >
echo -n
$(pgrep {{ item.binary_name }})
args:
executable: "{{ shell_path }}"
register: my_procs
答案 1 :(得分:0)
请有人知道我做错了吗?
在Ansible中没有可以管理/检查进程的模块。您可以使用shell
模块中的问题中包含的命令(注意this),注册结果并运行任务以启动该过程。
但是,同样可能的是,您的marketaccess
实际上是一项服务,或者另一项服务创建了子进程。没有办法说出来。请参阅软件手册。
您可以将service
module的参数作为arguments
参数提供。