From 2a5f2a08c80ca142e9a7c3cec8cb4ce88ab6ae1c Mon Sep 17 00:00:00 2001 From: Christian Segundo Date: Sat, 6 May 2023 23:59:06 +0200 Subject: First commit --- tasks/service-group.yml | 92 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 tasks/service-group.yml (limited to 'tasks/service-group.yml') diff --git a/tasks/service-group.yml b/tasks/service-group.yml new file mode 100644 index 0000000..dd661b0 --- /dev/null +++ b/tasks/service-group.yml @@ -0,0 +1,92 @@ +--- +- name: Create base config + copy: + dest: /tmp/{{ avahi_service_group.filename }}.service-tmp + content: | + + + + + changed_when: false + +- name: Create service definition + file: + path: /etc/avahi/services/{{ avahi_service_group.filename }}.service + state: touch + modification_time: preserve + owner: root + group: root + mode: u=rw,g=r,o=r + changed_when: false + +- name: Create base config + copy: + dest: /tmp/{{ avahi_service_group.filename }}.service-tmp + content: | + + + + + changed_when: false + +- name: Set service name + community.general.xml: + path: /tmp/{{ avahi_service_group.filename }}.service-tmp + xpath: /service-group/name + value: "{{ avahi_service_group.name }}" + changed_when: false + +- name: Set service attributes + community.general.xml: + path: /tmp/{{ avahi_service_group.filename }}.service-tmp + xpath: "/service-group/name" + value: "{{ item.value }}" + attribute: "{{ item.key }}" + loop: "{{ avahi_service_group.attributes | dict2items }}" + changed_when: false + +- name: Add services + community.general.xml: + path: /tmp/{{ avahi_service_group.filename }}.service-tmp + xpath: "/service-group" + add_children: + - service: + protocol: "{{ item.protocol | default('any') }}" + _: + - type: "{{ item.type }}" + - port: "{{ item.port | default(0) }}" + loop: "{{ avahi_service_group.services }}" + changed_when: false + +- name: Add service txt-records + community.general.xml: + path: /tmp/{{ avahi_service_group.filename }}.service-tmp + xpath: "/service-group/service[./type='{{ item.0.type }}']" + add_children: + - txt-record: "{{ item.1.value }}" + loop: "{{ avahi_service_group.services | subelements('txt-records', 'skip_missing=True') }}" + changed_when: false + +- name: Add value format to txt-records + community.general.xml: + path: /tmp/{{ avahi_service_group.filename }}.service-tmp + xpath: "/service-group/service[./type='{{ item.0.type }}']/txt-record[text()='{{ item.1.value }}']" + attribute: value-format + value: "{{ item.1['value-format'] | default('text') }}" + loop: "{{ avahi_service_group.services | subelements('txt-records', 'skip_missing=True') }}" + changed_when: false + +- stat: + path: "{{ item }}" + loop: + - "/tmp/{{ avahi_service_group.filename }}.service-tmp" + - "/etc/avahi/services/{{ avahi_service_group.filename }}.service" + register: avahi_service_group_stat + +- ansible.builtin.copy: + src: "/tmp/{{ avahi_service_group.filename }}.service-tmp" + dest: "/etc/avahi/services/{{ avahi_service_group.filename }}.service" + mode: preserve + remote_src: true + when: avahi_service_group_stat.results[0].stat.checksum != avahi_service_group_stat.results[0].stat.checksum + notify: ["restart avahi"] -- cgit v1.2.3