diff --git a/defaults/main.yml b/defaults/main.yml index ddd4916..d508600 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,2 +1,3 @@ --- -# defaults file for ansible-role-zerotier \ No newline at end of file +# defaults file for ansible-role-zerotier +zerotier_api_url: https://my.zerotier.com diff --git a/tasks/join_network.yml b/tasks/join_network.yml new file mode 100644 index 0000000..4dba8b1 --- /dev/null +++ b/tasks/join_network.yml @@ -0,0 +1,33 @@ +--- +- block: # Join Zerotier network + - name: Get Zerotier NodeID + shell: /sbin/zerotier-cli info | awk '{print $3}' + register: nodeid + + - name: Set NodeID as fact + set_fact: + zerotier_node_id: "{{ nodeid.stdout }}" + + - name: Add and authorize members to network + uri: + url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ zerotier_node_id }}" + method: POST + headers: + Authorization: bearer {{ zerotier_accesstoken }} + body: + name: "{{ inventory_hostname }}" + hidden: false + config: + authorized: true + body_format: json + register: apiresult + + - name: Join Zerotier network + command: /sbin/zerotier-cli join {{ zerotier_network_id }} + args: + creates: /var/lib/zerotier-one/networks.d/{{ zerotier_network_id }}.conf + + when: + - zerotier_accesstoken is defined + tags: + - configuration diff --git a/tasks/main.yml b/tasks/main.yml index 1319dcd..2f2f8e8 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,3 +1,12 @@ --- # tasks file for ansible-role-zerotier - include: install.yml + +- name: Check for successfully joined networks + shell: zerotier-cli listnetworks | grep 'OK'| awk '{print $3}' + register: joinednetworks + +- include: join_network.yml + when: + - 'zerotier_network_id not in joinednetworks.stdout' + - zerotier_accesstoken is defined