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