centos – Ansible Playbook:确保进程在群集的任何一个节点上运行?

Ansible使得确保每个主机上都运行进程变得非常容易.

我可以这样做:

---
- hosts: app_cluster
  tasks: 

  - name: Look for the "foo" process
    shell: ps -ef |  grep foo | grep -v grep
    register: process_list
    changed_when: false  

  - name: Start "foo" if needed
    shell: nohup /bin/foo &
    when: "process_list.stdout.find('foo') == -1"

但是,我需要在整个群集中只有一个特定进程的实例. IE浏览器.它可以在任何主机上运行,​​只要它在某个地方运行,只要集群中只有一个这样的进程.

可以在ansible playbook中有一个方便的方法吗?

您可以使用run_once参数,如 http://docs.ansible.com/ansible/playbooks_delegation.html#run-once中所述,因此任务将仅在批处理的第一个主机中运行.考虑到你不能指定订单,但它以某种方式“可预测”(更多信息在 https://github.com/ansible/ansible/issues/10964)

相关文章

linux下开机自启: 在/etc/init.d目录下新建文件elasticsear...
1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以...
最简单的查看方法可以使用ls -ll、ls-lh命令进行查看,当使用...
ASP.NET Core应用程序发布linux在shell中运行是正常的。可一...
设置时区(CentOS 7) 先执行命令timedatectl status|grep &...
vim /etc/sysconfig/network-scripts/ifcfg-eth0 B...