--- - name: Deploy Neo4j with Docker Compose hosts: ubuntu become: true vars: required_service: neo4j tasks: - name: Check if host has neo4j service ansible.builtin.set_fact: has_neo4j_service: "{{ required_service in services | default([]) }}" - name: Skip hosts without neo4j service ansible.builtin.meta: end_host when: not has_neo4j_service - name: Create neo4j group ansible.builtin.group: name: "{{neo4j_group}}" - name: Create neo4j user ansible.builtin.user: name: "{{neo4j_user}}" comment: "{{neo4j_user}}" group: "{{neo4j_group}}" system: true - name: Add group neo4j to keeper_user ansible.builtin.user: name: "{{keeper_user}}" groups: "{{neo4j_group}}" append: true - name: Create neo4j directory ansible.builtin.file: path: "{{neo4j_directory}}" owner: "{{neo4j_user}}" group: "{{neo4j_group}}" state: directory mode: '750' - name: Template docker-compose file ansible.builtin.template: src: docker-compose.yml.j2 dest: "{{neo4j_directory}}/docker-compose.yml" owner: "{{neo4j_user}}" group: "{{neo4j_group}}" mode: '550' - name: Reset SSH connection to apply group changes meta: reset_connection - name: Start Neo4j service community.docker.docker_compose_v2: project_src: "{{neo4j_directory}}" state: present