--- - name: Preflight | Read the Node.js version ansible.builtin.command: argv: ["{{ obsidian_headless_node_bin_dir }}/node", "--version"] register: _obh_node changed_when: false failed_when: false check_mode: false - name: Preflight | Require Node.js new enough for obsidian-headless ansible.builtin.assert: that: - _obh_node.rc == 0 - (_obh_node.stdout | trim | regex_replace('^v', '')) is version(obsidian_headless_node_min_version, '>=') fail_msg: >- {{ obsidian_headless_node_bin_dir }}/node is missing or older than {{ obsidian_headless_node_min_version }} (found: {{ _obh_node.stdout | default('nothing') | trim }}). This role uses the runtime multica_agent_host installs; run provision-agent-host.yml first. quiet: true - name: Preflight | Look up the users granted shared folders ansible.builtin.getent: database: passwd key: "{{ item }}" loop: "{{ obsidian_headless_shared_folders | map(attribute='user') | unique | list }}" - name: Preflight | Require shared folders to stay disjoint from private ones ansible.builtin.assert: that: - obsidian_headless_shared_folders | map(attribute='path') | intersect(obsidian_headless_private_folders) | length == 0 fail_msg: A folder cannot be both private and shared. quiet: true