使用systemd ansible启动多个进程
我想用模块启动N个进程,假设我有以下服务:使用systemd ansible启动多个进程,ansible,Ansible,我想用模块启动N个进程,假设我有以下服务: #文件:/etc/systemd/system/sleep@.service [服务] ExecStart=/bin/sleep 420 [安装] WantedBy=multi-user.target 我想用systemd模块启动3个进程: - name: Start Systemd Unit systemd: name: 'sleep@{1..3}.service' state: 'started' 上面的任务只创建一个编码的
#文件:/etc/systemd/system/sleep@.service
[服务]
ExecStart=/bin/sleep 420
[安装]
WantedBy=multi-user.target
我想用systemd模块启动3个进程:
- name: Start Systemd Unit
systemd:
name: 'sleep@{1..3}.service'
state: 'started'
上面的任务只创建一个编码的进程,我不知道如何不编码字符串。ansible是否支持创建多个流程?如果没有,最简单的方法是什么
我当前的解决方案定义了一个具有
实例
键的服务列表,使用子元素
我可以单独创建这些流程。我认为有更好的办法
app_systemd_services:
- name: sleep
instances: "{{ range(3) | list }}"
Ansible不支持范围(…)。对项目使用
- name: Start Systemd Unit
systemd:
name: 'sleep@{{ item }}.service'
state: started
with_items:
- 1
- 2
- 3
还有一个未经请求的建议。如果对systemd使用模板,请使用具有依赖关系的.target
单元
foo@.service
应该是通缉者:foo.target
,然后您可以通过systemctl stop/start/restart foo来管理它们。target
受支持,我的示例非常有效,允许我创建一个服务列表,每个服务都有许多实例。我认为目标单元
是最好的解决方案,我可以更好地控制服务,谢谢。我指的是三点语法(…),而不是范围
过滤器。现在,建议使用循环
,而不是带项目
:
- name: Start Systemd Unit
systemd:
name: 'sleep@{{ item }}.service'
state: started
with_items:
- 1
- 2
- 3