Skip to content

Commit

Permalink
Merge pull request #35 from m4rcu5nl/develop
Browse files Browse the repository at this point in the history
Release v1.2.3
  • Loading branch information
m4rcu5nl authored Mar 13, 2020
2 parents c7aae63 + 904dcb3 commit ca3cc07
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 24 deletions.
19 changes: 9 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,12 @@ Technically this role has no requirements. If it's ran without any variables set
[**zerotier_network_id**](#zerotier_network_id): when set hosts are told to join this network.
[**zerotier_api_accesstoken**](#zerotier_api_accesstoken): when set the role can handle member authentication and configuration using the ZeroTier API.


Role Variables
--------------

### zerotier_network_id
*Type*: string
*Default value*:
*Default value*:
*Description*: The 16 character network ID of the network the new members should join. The node will not join any network if omitted.

### zerotier_member_register_short_hostname
Expand All @@ -29,17 +28,17 @@ Role Variables

### zerotier_member_ip_assignments
*Type*: list
*Default value*: `[]`
*Default value*: `[]`
*Description*: A list of IP addresses to assign this member. The member will be automatically assigned an address on the network if left out.

### zerotier_member_description
*Type*: string
*Default value*: `""`
*Description*: Optional desription for a member.
*Default value*: `""`
*Description*: Optional description for a member.

### zerotier_api_accesstoken
*Type*: string
*Default value*: `""`
*Default value*: `""`
*Description*: The access token needed to authorize with the ZeroTier API. You can generate one in your account settings at https://my.zerotier.com/. If this is left out then the newly joined member will not be automatically authorized.

### zerotier_api_url
Expand All @@ -49,8 +48,8 @@ Role Variables

### zerotier_api_delegate
*Type*: string
*Default value*: `localhost`
*Description*: Option to delegate tasks for Zerotier API calls. This is usefull in a situation where API calls can only be made from a whitelisted management server, for example.
*Default value*: `localhost`
*Description*: Option to delegate tasks for Zerotier API calls. This is useful in a situation where API calls can only be made from a white-listed management server, for example.

Example Playbook
----------------
Expand All @@ -59,7 +58,7 @@ Example Playbook
- hosts: servers
vars:
zerotier_network_id: 1234567890qwerty
zerotier_accesstoken: "{{ vault_zerotier_accesstoken }}"
zerotier_api_accesstoken: "{{ vault_zerotier_accesstoken }}"
zerotier_register_short_hostname: true

roles:
Expand Down Expand Up @@ -91,4 +90,4 @@ Example Inventory

[dbservers:vars]
zerotier_member_description='<AppName> db cluster node'
```
```
2 changes: 1 addition & 1 deletion files/set_facts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ NETWORKS=$(zerotier-cli listnetworks | tail -n+2)

function file_content {
if [ ! -z "$NETWORKS" ]; then
network_count=$(echo $NETWORKS |wc -l)
network_count=$(echo "$NETWORKS" |wc -l)
counter=1

echo "{"
Expand Down
2 changes: 1 addition & 1 deletion meta/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ galaxy_info:
# - CC-BY
license: GPLv3

min_ansible_version: 2.4
min_ansible_version: 2.9

# If this a Container Enabled role, provide the minimum Ansible Container version.
# min_ansible_container_version:
Expand Down
11 changes: 6 additions & 5 deletions tasks/authorize_node.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
- block:
- name: Authorize new members to network
uri:
url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ ansible_local.zerotier.node_id }}"
url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ ansible_local['zerotier']['node_id'] }}"
method: POST
headers:
Authorization: bearer {{ zerotier_api_accesstoken }}
Expand All @@ -11,14 +11,15 @@
config:
authorized: "{{ zerotier_authorize_member }}"
body_format: json
register: auth_apiresult
register: auth_apiresult
delegate_to: "{{ zerotier_api_delegate }}"
when:
- ansible_local.zerotier.networks[zerotier_network_id] is not defined or ansible_local.zerotier.networks[zerotier_network_id].status != 'OK'
- ansible_local['zerotier']['networks'][zerotier_network_id] is not defined or
ansible_local['zerotier']['networks'][zerotier_network_id]['status'] != 'OK'

- name: Configure members in network
uri:
url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ ansible_local.zerotier.node_id }}"
url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ ansible_local['zerotier']['node_id'] }}"
method: POST
headers:
Authorization: bearer {{ zerotier_api_accesstoken }}
Expand All @@ -28,7 +29,7 @@
config:
ipAssignments: "{{ zerotier_member_ip_assignments | default([]) | list }}"
body_format: json
register: conf_apiresult
register: conf_apiresult
delegate_to: "{{ zerotier_api_delegate }}"

when:
Expand Down
2 changes: 1 addition & 1 deletion tasks/install.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---

- include_tasks: install/{{ ansible_os_family }}.yml
- include_tasks: install/{{ ansible_facts['os_family'] }}.yml
tags:
- installation
- repositories
Expand Down
1 change: 1 addition & 0 deletions tasks/install/Debian.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
- name: Add ZeroTier PGP key
apt_key:
url: "{{ zerotier_gpg_url }}"
id: "{{ zerotier_gpg_fingerprint }}"

- name: Check if Ubuntu release has dedicated repo
uri:
Expand Down
5 changes: 3 additions & 2 deletions tasks/install/RedHat.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
rpm_key:
state: present
key: "{{ zerotier_gpg_url }}"
fingerprint: "{{ zerotier_gpg_fingerprint }}"

- name: Add ZeroTier repo for RHEL/CentOS
yum_repository:
Expand All @@ -11,7 +12,7 @@
gpgcheck: yes
enabled: yes
register: zerotier_repo
when: ansible_distribution != "Fedora"
when: ansible_facts['distribution'] != "Fedora"

- name: Add zerotier repo for Fedora
yum_repository:
Expand All @@ -21,4 +22,4 @@
gpgcheck: yes
enabled: yes
register: zerotier_repo
when: ansible_distribution == "Fedora"
when: ansible_facts['distribution'] == "Fedora"
8 changes: 4 additions & 4 deletions tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,20 +2,20 @@
# tasks file for ansible-role-zerotier
- import_tasks: install.yml
when:
- not skip_install|default(false)|bool
- not skip_install | default(false) | bool

- block:
- name: Update ansible_local facts
script: set_facts.sh

- name: Re-gather facts
setup: ~
- name: Re-gather ansible_local facts
setup: filter=ansible_local


- import_tasks: authorize_node.yml
when:
- zerotier_api_accesstoken | length > 0
- ansible_local.zerotier.node_id is defined
- ansible_local['zerotier']['node_id'] is defined

- import_tasks: join_network.yml
when:
Expand Down
1 change: 1 addition & 0 deletions vars/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,4 @@
zerotier_download_base_url: http://download.zerotier.com
zerotier_deb_release_repo: "{{ ansible_facts['distribution_release'] }}"
zerotier_gpg_url: https://download.zerotier.com/contact@zerotier.com.gpg
zerotier_gpg_fingerprint: 74A5E9C458E1A431F1DA57A71657198823E52A61

0 comments on commit ca3cc07

Please sign in to comment.