From 7b9f5d02a31db05d1b3560379f6e54aea909418e Mon Sep 17 00:00:00 2001 From: Marcus Meurs Date: Thu, 5 Apr 2018 11:23:07 +0200 Subject: [PATCH 1/6] Conditional installation Don't import installation tasks when the zt0 interface is present on target host. --- tasks/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tasks/main.yml b/tasks/main.yml index 554c10e..6410992 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -1,6 +1,8 @@ --- # tasks file for ansible-role-zerotier - import_tasks: install.yml + when: + - "'zt0' not in ansible_interfaces" - import_tasks: authorize_node.yml when: From 31e25cb3f0598d89b8154bd88261d8a9d62460f2 Mon Sep 17 00:00:00 2001 From: Marcus Meurs Date: Thu, 5 Apr 2018 11:32:19 +0200 Subject: [PATCH 2/6] Make API call local_action Having the controller talk to the ZeroTier API instead of connecting to the target hosts and make them do it is much faster. --- tasks/authorize_node.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tasks/authorize_node.yml b/tasks/authorize_node.yml index 50c34e7..a6f7c87 100644 --- a/tasks/authorize_node.yml +++ b/tasks/authorize_node.yml @@ -10,7 +10,8 @@ zerotier_node_id: "{{ nodeid.stdout }}" - name: Add and authorize members to network - uri: + local_action: + module: uri url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ zerotier_node_id }}" method: POST headers: @@ -24,6 +25,7 @@ ipAssignments: "{{ zerotier_member_ip_assignments | default([]) | list }}" body_format: json register: apiresult + become: false when: - zerotier_accesstoken is defined From 4146b7a2576018129e1c28354024b086edcd217d Mon Sep 17 00:00:00 2001 From: Marcus Meurs Date: Mon, 9 Apr 2018 04:30:56 +0200 Subject: [PATCH 3/6] Option to skip installation Give the user an option to skip the installation tasks. There's no real need to download the pgp key and packages again when all you want to do is reconfigure existing members. --- tasks/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tasks/main.yml b/tasks/main.yml index 6410992..0b2aa25 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -2,7 +2,7 @@ # tasks file for ansible-role-zerotier - import_tasks: install.yml when: - - "'zt0' not in ansible_interfaces" + - not skip_install|default(false)|bool - import_tasks: authorize_node.yml when: From 33c53916c0a981354da4a4a63b30361a82a762fa Mon Sep 17 00:00:00 2001 From: Chris Date: Thu, 10 May 2018 12:55:33 -0500 Subject: [PATCH 4/6] Add repo for Fedora --- tasks/install/RedHat.yml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/tasks/install/RedHat.yml b/tasks/install/RedHat.yml index 860ac7b..ed3a695 100644 --- a/tasks/install/RedHat.yml +++ b/tasks/install/RedHat.yml @@ -3,7 +3,7 @@ state: present key: "{{ zerotier_gpg_url }}" -- name: Add ZeroTier repo +- name: Add ZeroTier repo for RHEL/CentOS yum_repository: name: zerotier description: ZeroTier, Inc. RPM Release Repository @@ -11,3 +11,14 @@ gpgcheck: yes enabled: yes register: zerotier_repo + when: ansible_distribution != "Fedora" + +- name: Add zerotier repo for Fedora + yum_repository: + name: zerotier + description: ZeroTier, Inc. RPM Release Repository + baseurl: https://download.zerotier.com/redhat/fc/$releasever + gpgcheck: yes + enabled: yes + register: zerotier_repo + when: ansible_distribution == "Fedora" From 10fd2fd4986cae49d7100e1a7d185d7ba5785cb2 Mon Sep 17 00:00:00 2001 From: Zhaofeng Li Date: Wed, 25 Jul 2018 22:53:12 +0800 Subject: [PATCH 5/6] Add Arch Linux support --- tasks/install.yml | 2 +- tasks/install/Archlinux.yml | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 tasks/install/Archlinux.yml diff --git a/tasks/install.yml b/tasks/install.yml index 1fa4fd8..4e59976 100644 --- a/tasks/install.yml +++ b/tasks/install.yml @@ -22,7 +22,7 @@ - enable zerotier-one when: - - zerotier_repo is succeeded + - zerotier_repo is not defined or zerotier_repo is succeeded - not ansible_check_mode tags: - installation diff --git a/tasks/install/Archlinux.yml b/tasks/install/Archlinux.yml new file mode 100644 index 0000000..3f9270a --- /dev/null +++ b/tasks/install/Archlinux.yml @@ -0,0 +1 @@ +# zerotier-one is available in the official repositories From 3de2e738d47f6f71c9642e9ee3ca427c071eb252 Mon Sep 17 00:00:00 2001 From: Marcus Meurs Date: Wed, 25 Jul 2018 18:13:38 +0200 Subject: [PATCH 6/6] 2 separate API calls - authorize member - configure member This is a workaround for the issue described in #17 --- tasks/authorize_node.yml | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/tasks/authorize_node.yml b/tasks/authorize_node.yml index a6f7c87..7be25bb 100644 --- a/tasks/authorize_node.yml +++ b/tasks/authorize_node.yml @@ -9,7 +9,22 @@ set_fact: zerotier_node_id: "{{ nodeid.stdout }}" - - name: Add and authorize members to network + - name: Authorize members to network + local_action: + module: uri + url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ zerotier_node_id }}" + method: POST + headers: + Authorization: bearer {{ zerotier_accesstoken }} + body: + hidden: false + config: + authorized: "{{ zerotier_authorize_member }}" + body_format: json + register: auth_apiresult + become: false + + - name: Configure members in network local_action: module: uri url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ zerotier_node_id }}" @@ -19,12 +34,10 @@ body: name: "{{ zerotier_register_short_hostname | ternary(inventory_hostname_short, inventory_hostname) }}" description: "{{ zerotier_member_description | default() }}" - hidden: false config: - authorized: "{{ zerotier_authorize_member }}" ipAssignments: "{{ zerotier_member_ip_assignments | default([]) | list }}" body_format: json - register: apiresult + register: conf_apiresult become: false when: