Update playbooks/alpine/install-zerotier.yml
This commit is contained in:
1 parent
3af08ca647
commit
de2185b4e5
1 file changed
+91
-37
@@ -1,58 +1,112 @@
|
|||||||
---
|
---
|
||||||
- name: Install ZeroTier on Alpine hosts using Docker
|
- name: Install ZeroTier binary on Alpine
|
||||||
hosts: alpine
|
hosts: alpine
|
||||||
become: true
|
become: true
|
||||||
gather_facts: true
|
gather_facts: true
|
||||||
|
|
||||||
tasks:
|
vars:
|
||||||
- name: Verify Alpine Linux
|
zerotier_version: "1.16.2"
|
||||||
ansible.builtin.assert:
|
zerotier_dir: /var/lib/zerotier-one
|
||||||
that:
|
zerotier_binary_url: "https://download.zerotier.com/RELEASES/1.4.2/dist/static-binaries/zerotier-one.x86_64.gz"
|
||||||
- ansible_facts["distribution"] == "Alpine"
|
|
||||||
- ansible_facts["architecture"] == "x86_64"
|
|
||||||
|
|
||||||
- name: Ensure persistent ZeroTier directory exists
|
tasks:
|
||||||
|
- name: Install required packages
|
||||||
|
community.general.apk:
|
||||||
|
name:
|
||||||
|
- ca-certificates
|
||||||
|
- curl
|
||||||
|
- gzip
|
||||||
|
- iproute2
|
||||||
|
state: present
|
||||||
|
update_cache: true
|
||||||
|
|
||||||
|
- name: Create ZeroTier directories
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
path: /opt/zerotier-one
|
path: "{{ item }}"
|
||||||
state: directory
|
state: directory
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
mode: "0700"
|
mode: "0755"
|
||||||
|
loop:
|
||||||
|
- /usr/local/bin
|
||||||
|
- "{{ zerotier_dir }}"
|
||||||
|
|
||||||
- name: Ensure TUN device exists
|
- name: Download ZeroTier static binary
|
||||||
|
ansible.builtin.get_url:
|
||||||
|
url: "{{ zerotier_binary_url }}"
|
||||||
|
dest: /tmp/zerotier-one.gz
|
||||||
|
mode: "0644"
|
||||||
|
force: true
|
||||||
|
|
||||||
|
- name: Extract ZeroTier binary
|
||||||
|
ansible.builtin.command:
|
||||||
|
cmd: gzip -dc /tmp/zerotier-one.gz
|
||||||
|
register: zerotier_binary
|
||||||
|
changed_when: true
|
||||||
|
no_log: true
|
||||||
|
|
||||||
|
- name: Install ZeroTier binary
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: "{{ zerotier_binary.stdout }}"
|
||||||
|
dest: /usr/local/bin/zerotier-one
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
no_log: true
|
||||||
|
|
||||||
|
- name: Create ZeroTier CLI symlink
|
||||||
|
ansible.builtin.file:
|
||||||
|
src: /usr/local/bin/zerotier-one
|
||||||
|
dest: /usr/local/bin/zerotier-cli
|
||||||
|
state: link
|
||||||
|
|
||||||
|
- name: Create OpenRC service
|
||||||
|
ansible.builtin.copy:
|
||||||
|
dest: /etc/init.d/zerotier-one
|
||||||
|
owner: root
|
||||||
|
group: root
|
||||||
|
mode: "0755"
|
||||||
|
content: |
|
||||||
|
#!/sbin/openrc-run
|
||||||
|
|
||||||
|
name="ZeroTier One"
|
||||||
|
command="/usr/local/bin/zerotier-one"
|
||||||
|
command_args="-d"
|
||||||
|
command_background="yes"
|
||||||
|
pidfile="/run/zerotier-one.pid"
|
||||||
|
directory="{{ zerotier_dir }}"
|
||||||
|
output_log="/var/log/zerotier-one.log"
|
||||||
|
error_log="/var/log/zerotier-one.log"
|
||||||
|
|
||||||
|
- name: Check TUN device
|
||||||
ansible.builtin.stat:
|
ansible.builtin.stat:
|
||||||
path: /dev/net/tun
|
path: /dev/net/tun
|
||||||
register: zerotier_tun
|
register: zerotier_tun
|
||||||
|
|
||||||
- name: Fail if TUN device is unavailable
|
- name: Stop if TUN device is missing
|
||||||
ansible.builtin.fail:
|
ansible.builtin.fail:
|
||||||
msg: "Enable /dev/net/tun on this host or its Proxmox LXC configuration first."
|
msg: "ZeroTier binary is installed, but /dev/net/tun is missing. Enable TUN access in the Proxmox LXC configuration before starting the service."
|
||||||
when: not zerotier_tun.stat.exists
|
when: not zerotier_tun.stat.exists
|
||||||
|
|
||||||
- name: Install Python dependencies for Docker modules
|
- name: Enable ZeroTier at boot
|
||||||
community.general.apk:
|
ansible.builtin.command:
|
||||||
name:
|
cmd: rc-update add zerotier-one default
|
||||||
- py3-requests
|
register: zerotier_rc_update
|
||||||
state: present
|
changed_when: zerotier_rc_update.rc == 0
|
||||||
update_cache: true
|
failed_when: false
|
||||||
|
|
||||||
- name: Pull ZeroTier container image
|
- name: Start ZeroTier
|
||||||
community.docker.docker_image:
|
ansible.builtin.command:
|
||||||
name: zyclonite/zerotier:1.14.2
|
cmd: rc-service zerotier-one restart
|
||||||
source: pull
|
register: zerotier_start
|
||||||
|
changed_when: zerotier_start.rc == 0
|
||||||
|
|
||||||
- name: Run ZeroTier container
|
- name: Verify ZeroTier binary
|
||||||
community.docker.docker_container:
|
ansible.builtin.command:
|
||||||
name: zerotier
|
cmd: /usr/local/bin/zerotier-one -v
|
||||||
image: zyclonite/zerotier:1.14.2
|
register: zerotier_version_check
|
||||||
state: started
|
changed_when: false
|
||||||
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 installed version
|
||||||
|
ansible.builtin.debug:
|
||||||
|
var: zerotier_version_check.stdout
|
||||||
Reference in new issue
Block a user