使用systemd ansible启动多个进程

使用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' 上面的任务只创建一个编码的

我想用模块启动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'
上面的任务只创建一个编码的进程,我不知道如何不编码字符串。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