簡體   English   中英

使用 systemd ansible 啟動多個進程

[英]Start many processes using systemd ansible

我想用systemd模塊啟動 N 個進程,假設我有以下服務:

# file: /etc/systemd/system/sleep@.service
[Service]
ExecStart=/bin/sleep 420

[Install]
WantedBy=multi-user.target

我想用 systemd 模塊啟動 3 個進程:

- name: Start Systemd Unit
  systemd:
    name: 'sleep@{1..3}.service'
    state: 'started'

上面的任務只創建了一個編碼進程sleep@\\x7b1..3\\x7d.service ,我不知道如何不對字符串進行編碼。 ansible是否支持創建多進程? 如果沒有,最簡單的方法是什么?


我當前的解決方法定義了一個具有instances鍵的服務列表,使用我能夠單獨創建這些進程的subelements 我認為有更好的方法。

app_systemd_services:
  - name: sleep
    instances: "{{ range(3) | list }}"
- name: Ensure Systemd Units are started
  systemd:
    name: "{{ item.0.name }}@{{ item.1 }}.service"
    state: started
  loop: "{{ app_systemd_services | subelements('instances') }}" 

Ansible 不支持范圍 (...)。 使用with_items

- name: Start Systemd Unit
  systemd:
    name: 'sleep@{{ item }}.service'
    state: started
  with_items:
    - 1
    - 2
    - 3

還有一個不請自來的建議。 如果您使用 systemd 的模板,請使用具有依賴關系的.target單元。

foo@.service的模板應該是Wanted-by: foo.target ,然后你可以通過systemctl stop/start/restart foo.target來管理它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM