[英]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.