ansible启动多个服务并截断名称服务

ansible start multiple service and truncate name service

我想在 playbook 上启动多项服务,但我想删除服务结束字符串,例如: a.service => 一个 b.service => b

因为我不能使用服务a.service启动,但我必须使用服务启动

因为可变项存储在 default/main.yml 角色剧本中,就像这样:

name_services:
  - a.service
  - b.service                                                                                                                                                                                 

在 main.yml

- name: start multiple service
  service:
    name: "{{ item }}"
    state: started
  with_items: "{{ name_services }}"

这是实现它的一种方法,因为服务的字符串值中只有一个点 (.)。您根据点拆分并获取第一个块(点之前的字符串)。

  - debug:
      var: item.split('.')[0]
    loop: "{{ name_services }}"

另一种方法是从字符串中删除 .service 部分:

  - debug:
      var: item.replace('.service','')
    loop: "{{ name_services }}"

干杯

使用过滤器splitext

- name: start multiple service
  service:
    name: "{{ item | splitext | first }}"
    state: started
  with_items: "{{ name_services }}"