Необходимо скопировать пачку файлов – задач для supervisord
.
В Ansible используем with_fileblob
:
... - name: "Copy supervisor tasks" template: src: "{{ item }}" dest: "/etc/supervisor/conf.d/{{ item | basename | regex_replace('.j2','') }}" owner: "root" group: "root" mode: 0644 with_fileglob: - templates/*.j2 ...
С помощью фильтра basename
– получаем имя файла из {{ item }}
, а с помощью regex_replace
– вырезаем из его имени .j2
.
Шаблоны выглядят так:
[simterm]
$ ls -l roles/supervisor/templates/ total 100 -rw-r--r-- 1 setevoy setevoy 740 Sep 10 13:16 proj1-instant-article-worker.conf.j2 -rw-r--r-- 1 setevoy setevoy 668 Sep 10 13:15 proj1-jwplayer.conf.j2 ... -rw-r--r-- 1 setevoy setevoy 644 Sep 10 13:14 proj2-update-worker.conf.j2 -rw-r--r-- 1 setevoy setevoy 583 Sep 10 13:14 proj2-ws.conf.j2
[/simterm]
Запускаем задачу:
[simterm]
... changed: [production.master.dme.example.world] => (item=/home/setevoy/Work/devops/projects/dme/roles/supervisor/templates/proj1-jwplayer.conf.j2) changed: [production.master.dme.example.world] => (item=/home/setevoy/Work/devops/projects/dme/roles/supervisor/templates/proj2-instant-article-worker.conf.j2) changed: [production.master.dme.example.world] => (item=/home/setevoy/Work/devops/projects/dme/roles/supervisor/templates/proj3-instant-article-worker.conf.j2) ...
[/simterm]
Проверяем файлы:
[simterm]
root@dme-production-master:/data# ls -l /etc/supervisor/conf.d/ total 20 -rw-r--r-- 1 root root 713 Sep 10 13:30 proj1-instant-article-worker.conf -rw-r--r-- 1 root root 642 Sep 10 13:30 proj2-jwplayer.conf -rw-r--r-- 1 root root 704 Sep 10 13:30 proj3-instant-article-worker.conf -rw-r--r-- 1 root root 686 Sep 10 13:31 proj4-jwplayer_worker.conf -rw-r--r-- 1 root root 699 Sep 10 13:31 proj5-instant-article-worker.conf ...
[/simterm]
И статус супервизора:
[simterm]
root@dme-production-master:/data/dme# supervisorctl status ... proj1-ws RUNNING pid 11946, uptime 0:25:20
[/simterm]
Готово.