--- - name: Deploy MCP Switchboard hosts: ubuntu tasks: - name: Check if host has mcp_switchboard service ansible.builtin.set_fact: has_mcp_switchboard_service: "{{'mcp_switchboard' in services}}" - name: Skip hosts without mcp_switchboard service ansible.builtin.meta: end_host when: not has_mcp_switchboard_service - name: Create mcp_switchboard user and group become: true ansible.builtin.group: name: "{{mcp_switchboard_group}}" state: present - name: Create mcp_switchboard user become: true ansible.builtin.user: name: "{{mcp_switchboard_user}}" group: "{{mcp_switchboard_group}}" home: "{{mcp_switchboard_directory}}" shell: /bin/bash system: true create_home: false - name: Add keeper_user to mcp_switchboard group become: true ansible.builtin.user: name: "{{keeper_user}}" groups: "{{mcp_switchboard_group}}" append: true - name: Add mcp_switchboard user to docker group become: true ansible.builtin.user: name: "{{mcp_switchboard_group}}" groups: docker append: true - name: Create required directories become: true ansible.builtin.file: path: "{{mcp_switchboard_directory}}" owner: "{{mcp_switchboard_user}}" group: "{{mcp_switchboard_group}}" state: directory mode: '750' - name: Transfer and unarchive git archive become: true ansible.builtin.unarchive: src: "~/rel/mcp_switchboard_{{mcp_switchboard_rel}}.tar" dest: "{{mcp_switchboard_directory}}" owner: "{{mcp_switchboard_user}}" group: "{{mcp_switchboard_group}}" mode: '550' - name: Install mcp_switchboard package in virtual environment become: true become_user: "{{mcp_switchboard_user}}" vars: ansible_common_remote_group: "{{mcp_switchboard_group}}" allow_world_readable_tmpfiles: true ansible.builtin.pip: name: . virtualenv: "{{mcp_switchboard_directory}}/.venv" virtualenv_command: python3 -m venv chdir: "{{mcp_switchboard_directory}}" - name: Template .env file become: true ansible.builtin.template: src: .env.j2 dest: "{{mcp_switchboard_directory}}/.env" owner: "{{mcp_switchboard_user}}" group: "{{mcp_switchboard_group}}" mode: '550' - name: Template systemd service file become: true ansible.builtin.template: src: mcp_switchboard.service.j2 dest: /etc/systemd/system/mcp_switchboard.service owner: root group: root mode: '644' notify: restart mcp_switchboard - name: Enable and start mcp_switchboard service become: true ansible.builtin.systemd: name: mcp_switchboard enabled: true state: started daemon_reload: true handlers: - name: restart mcp_switchboard become: true ansible.builtin.systemd: name: mcp_switchboard state: restarted