--- - name: Download Tailscale GPG key ansible.builtin.get_url: url: https://pkgs.tailscale.com/stable/debian/bookworm.noarmor.gpg dest: /usr/share/keyrings/tailscale-archive-keyring.gpg mode: '0644' force: false - name: Add Tailscale repository ansible.builtin.deb822_repository: name: tailscale types: deb uris: https://pkgs.tailscale.com/stable/debian suites: "{{ ansible_facts['distribution_release'] }}" components: main signed_by: /usr/share/keyrings/tailscale-archive-keyring.gpg state: present enabled: true - name: Install Tailscale ansible.builtin.apt: name: tailscale state: present update_cache: true - name: Check if Tailscale is already connected ansible.builtin.command: tailscale status --json register: tailscale_status changed_when: false failed_when: false - name: Connect to Tailscale ansible.builtin.command: "tailscale up --authkey={{ tailscale_authkey }} {{ tailscale_args | default('') }}" when: - not (tailscale_skip_connect | default(false)) - tailscale_authkey | length > 0 - tailscale_status.rc != 0 or 'BackendState":"Running"' not in tailscale_status.stdout register: tailscale_up changed_when: tailscale_up.rc == 0 - name: Get Tailscale IP address ansible.builtin.command: tailscale ip -4 register: tailscale_ip_result changed_when: false failed_when: false - name: Set Tailscale IP fact ansible.builtin.set_fact: tailscale_ip: "{{ tailscale_ip_result.stdout | trim }}" when: tailscale_ip_result.rc == 0 - name: Display Tailscale IP ansible.builtin.debug: msg: "Tailscale IP: {{ tailscale_ip }}" when: tailscale_ip_result.rc == 0