diff --git a/playbooks/alpine/install-zerotier.yml b/playbooks/alpine/install-zerotier.yml index 113e97f..fb071dc 100644 --- a/playbooks/alpine/install-zerotier.yml +++ b/playbooks/alpine/install-zerotier.yml @@ -1,5 +1,6 @@ + --- -- name: Install ZeroTier on Alpine hosts +- name: Install ZeroTier on Alpine hosts using Docker hosts: alpine become: true gather_facts: true @@ -9,43 +10,43 @@ ansible.builtin.assert: that: - ansible_facts["distribution"] == "Alpine" - fail_msg: "This playbook only supports Alpine Linux." + - ansible_facts["architecture"] == "x86_64" - - name: Install ZeroTier - community.general.apk: - name: zerotier-one - state: present - update_cache: true + - name: Ensure persistent ZeroTier directory exists + ansible.builtin.file: + path: /opt/zerotier-one + state: directory + owner: root + group: root + mode: "0700" - - name: Enable ZeroTier at boot - ansible.builtin.command: - cmd: rc-update add zerotier-one default - register: zerotier_enable - changed_when: zerotier_enable.rc == 0 - failed_when: - - zerotier_enable.rc != 0 - - "'already' not in (zerotier_enable.stderr | lower)" + - name: Ensure TUN device exists + ansible.builtin.stat: + path: /dev/net/tun + register: zerotier_tun - - name: Start ZeroTier - ansible.builtin.command: - cmd: rc-service zerotier-one start - register: zerotier_start - changed_when: zerotier_start.rc == 0 - failed_when: zerotier_start.rc != 0 + - name: Fail if TUN device is unavailable + ansible.builtin.fail: + msg: "Enable /dev/net/tun on this host or its Proxmox LXC configuration first." + when: not zerotier_tun.stat.exists - - name: Verify ZeroTier package - ansible.builtin.command: - cmd: apk info -e zerotier-one - register: zerotier_package - changed_when: false - failed_when: zerotier_package.rc != 0 + - name: Pull ZeroTier container image + community.docker.docker_image: + name: zyclonite/zerotier:1.14.2 + source: pull - - name: Check ZeroTier node status - ansible.builtin.command: - cmd: zerotier-cli info - register: zerotier_info - changed_when: false + - name: Run ZeroTier container + community.docker.docker_container: + name: zerotier + image: zyclonite/zerotier:1.14.2 + state: started + restart_policy: unless-stopped + network_mode: host + capabilities: + - NET_ADMIN + - SYS_ADMIN + devices: + - /dev/net/tun:/dev/net/tun + volumes: + - /opt/zerotier-one:/var/lib/zerotier-one - - name: Display ZeroTier status - ansible.builtin.debug: - msg: "{{ inventory_hostname }}: {{ zerotier_info.stdout }}"