--- - name: Load Element Web config.json content ansible.builtin.slurp: src: "{{ element_web_config_path }}" register: element_web_config_content_raw ignore_errors: false - name: Parse Element Web config.json content ansible.builtin.set_fact: element_web_config_content: "{{ element_web_config_content_raw['content'] | b64decode | from_json }}" when: element_web_config_content_raw is defined and element_web_config_content_raw['content'] is defined - name: Update Element Web config.json settings ansible.builtin.set_fact: element_web_config_content: "{{ element_web_config_content | combine({ 'features': { 'feature_video_rooms': true, 'feature_new_room_decoration_ui': true, 'feature_group_calls': true, 'feature_element_call_video_rooms': true }, 'element_call': { 'url': 'https://{{ matrix_element_call_domain }}', 'participant_limit': 8, 'brand': 'Element Call', 'use_exclusively': true } }, recursive=True) }}" when: element_web_config_content is defined - name: Write updated Element Web config.json back to disk ansible.builtin.copy: content: "{{ element_web_config_content | to_nice_json }}" dest: "{{ element_web_config_path }}" mode: '0644' owner: "{{ matrix_user_username }}" group: "{{ matrix_user_groupname }}" when: element_web_config_content is defined