#!/usr/bin/env ansible-playbook
# vim:ft=ansible:
---
- name: check for zerotier in /usr/bin
  stat: path=/usr/bin/zerotier-cli
  register: zerotier_cli_path
- name: check for zerotier in /usr/sbin
  stat: path=/usr/sbin/zerotier-cli
  register: zerotier_cli_path
  when: not zerotier_cli_path.stat.exists
- name: install zerotier if we're joining networks
  block:
    - name: configure zerotier for apt
      block:
        - name: ensure zerotier repo key
          ansible.builtin.apt_key: url="{{ zerotier_repo_deb_key }}"
        - name: ensure zerotier repo
          ansible.builtin.apt_repository: repo="{{ zerotier_repo_deb }}"
        - name: update apt cache
          ansible.builtin.apt: update_cache=yes cache_valid_time=86400
        - name: ensure packages
          ansible.builtin.apt: name=zerotier-one
      when: ansible_pkg_mgr == "apt"
    - name: template unit file
      ansible.builtin.template: src=zerotier-one.service dest=/etc/systemd/system/zerotier-one.service mode=0644
      notify: restart zerotier
    - name: join networks
      ansible.builtin.command:
        argv: [ zerotier-cli, join, "{{ item }}" ]
      with_items: "{{ zerotier_networks_join }}"
      changed_when: no
  when: zerotier_networks_join is defined and zerotier_networks_join
- name: leave networks
  ansible.builtin.command:
    argv: [ zerotier-cli, leave, "{{ item }}" ]
  register: zerotierleave
  with_items: "{{ zerotier_networks_leave }}"
  when: zerotier_cli_path.stat.exists and zerotier_networks_leave is defined
  changed_when: no
  failed_when: "'0 leave connection failed' in zerotierleave.stdout"