|
1 | 1 | ---
|
2 |
| -- name: Configure Celery systemd service unit |
3 |
| - template: src=celery.service.j2 dest="/etc/systemd/system/{{item.name}}.service" |
4 |
| - notify: restart celery services |
| 2 | + |
| 3 | +- name: Link Service Unit |
| 4 | + file: |
| 5 | + src: "{{celery_env_dir}}/{{item.name}}.service" |
| 6 | + dest: "/etc/systemd/system/{{item.name}}.service" |
| 7 | + owner: root |
| 8 | + group: root |
| 9 | + state: link |
| 10 | + with_items: "{{celery_services}}" |
| 11 | + |
| 12 | +- name: Get units configs |
| 13 | + find: |
| 14 | + path: "{{celery_env_dir}}/" |
| 15 | + pattern: '^.*?\.service$' |
| 16 | + use_regex: yes |
| 17 | + register: service_configs |
| 18 | + changed_when: false |
| 19 | + |
| 20 | +- name: Set file list |
| 21 | + set_fact: |
| 22 | + unmanaged_configs: "{{(service_configs.files|map(attribute='path')|map('basename')|map('replace', '.service','')|list)|reject('in', celery_services|map(attribute='name')|list)|list}}" |
| 23 | + changed_when: false |
| 24 | + |
| 25 | +- name: Stop Unmanaged Service |
| 26 | + systemd: |
| 27 | + name: "{{item}}.service" |
| 28 | + state: stopped |
| 29 | + with_items: "{{unmanaged_configs}}" |
| 30 | + |
| 31 | +- name: Remove Unmanaged Services |
| 32 | + file: |
| 33 | + dest: "/etc/systemd/system/{{item}}.service" |
| 34 | + owner: root |
| 35 | + group: root |
| 36 | + state: absent |
| 37 | + register: removed_services |
| 38 | + with_items: "{{unmanaged_configs}}" |
| 39 | + |
| 40 | +- name: Detect Changes |
| 41 | + command: /bin/true |
| 42 | + register: celery_services_state |
| 43 | + when: item.changed |
| 44 | + with_items: "{{celery_states.results + removed_services.results}}" |
| 45 | + |
| 46 | +- name: Reload systemd daemon |
| 47 | + systemd: |
| 48 | + daemon_reload: yes |
| 49 | + when: celery_services_state is changed |
| 50 | + |
| 51 | +- name: Enable Service |
| 52 | + systemd: |
| 53 | + name: "{{item.name}}.service" |
| 54 | + state: "{{item.state|default('stopped')}}" |
| 55 | + enabled: yes |
| 56 | + when: item.enabled|default(False)|bool |
5 | 57 | with_items: "{{celery_services}}"
|
0 commit comments