main.yml 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. ---
  2. - name: Check authentication status
  3. block:
  4. - ansible.builtin.set_fact:
  5. _auth_needed: false
  6. - register: _status
  7. changed_when: false
  8. ansible.builtin.command:
  9. argv:
  10. - 'tailscale'
  11. - 'status'
  12. - '--json'
  13. - when: _fields.BackendState == "NeedsLogin"
  14. ansible.builtin.set_fact:
  15. _auth_needed: true
  16. vars:
  17. _fields: "{{ _status.stdout | from_json }}"
  18. - name: Login
  19. when: _auth_needed
  20. block:
  21. - name: Login into tailscale
  22. pause:
  23. prompt: "Enter to continue."
  24. - name: Configure tailscale
  25. become: true
  26. command:
  27. argv:
  28. - 'tailscale'
  29. - 'set'
  30. - "{{ item }}"
  31. loop:
  32. - '--auto-update=false'
  33. - '--update-check=false'
  34. - '--accept-dns=false'
  35. - "--webclient={{ tailscale.webclient | default('false') }}"
  36. - "--advertise-exit-node={{ tailscale.exit_node | default('false') }}"
  37. - "--advertise-routes={{ tailscale.routes | default([]) | join(',') }}"
  38. - "--ssh={{ tailscale.ssh | default('false') }}"
  39. - "--snat-subnet-routes=false"
  40. notify:
  41. - Restart tailscale