Merge branch 'feature/persistent_custom_facts' into develop
commit
618ae55bd7
|
|
@ -0,0 +1,42 @@
|
|||
#!/bin/bash
|
||||
FACTS_DIR='/etc/ansible/facts.d'
|
||||
FACT_FILE="${FACTS_DIR}/zerotier.fact"
|
||||
NODE_STATUS=($(zerotier-cli status))
|
||||
NETWORKS=$(zerotier-cli listnetworks | tail -n+2)
|
||||
|
||||
function file_content {
|
||||
if [ ! -z "$NETWORKS" ]; then
|
||||
network_count=$(echo $NETWORKS |wc -l)
|
||||
counter=1
|
||||
|
||||
echo "{"
|
||||
echo " \"node_id\":\"${NODE_STATUS[2]}\","
|
||||
echo " \"networks\": {"
|
||||
while read -r; do
|
||||
network=($REPLY)
|
||||
echo " \"${network[2]}\": {"
|
||||
echo " \"status\":\"${network[5]}\""
|
||||
|
||||
if [ "$counter" -eq "$network_count" ]; then
|
||||
echo " }"
|
||||
else
|
||||
echo " },"
|
||||
fi
|
||||
((counter++))
|
||||
done <<< $NETWORKS
|
||||
echo " }"
|
||||
echo "}"
|
||||
else
|
||||
echo "{\"node_id\":\"${NODE_STATUS[2]}\",\"networks\":{}}"
|
||||
fi
|
||||
}
|
||||
|
||||
if [ ! -d "$FACTS_DIR" ]; then
|
||||
mkdir -p $FACTS_DIR
|
||||
fi
|
||||
|
||||
file_content > $FACT_FILE
|
||||
|
||||
|
||||
# TO-DO
|
||||
# Consider something that hadles JSON better than Bash does
|
||||
|
|
@ -1,24 +1,8 @@
|
|||
---
|
||||
- block:
|
||||
- name: Get Zerotier NodeID
|
||||
shell: zerotier-cli info | awk '{print $3}'
|
||||
register: nodeid
|
||||
changed_when: false
|
||||
|
||||
- name: Set NodeID as fact
|
||||
set_fact:
|
||||
zerotier_node_id: "{{ nodeid.stdout }}"
|
||||
|
||||
when:
|
||||
- zerotier_accesstoken is defined
|
||||
- not ansible_check_mode
|
||||
tags:
|
||||
- configuration
|
||||
|
||||
- block:
|
||||
- name: Authorize members to network
|
||||
- name: Authorize new members to network
|
||||
uri:
|
||||
url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ zerotier_node_id }}"
|
||||
url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ ansible_local.zerotier.node_id }}"
|
||||
method: POST
|
||||
headers:
|
||||
Authorization: bearer {{ zerotier_accesstoken }}
|
||||
|
|
@ -29,10 +13,12 @@
|
|||
body_format: json
|
||||
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'
|
||||
|
||||
- name: Configure members in network
|
||||
uri:
|
||||
url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ zerotier_node_id }}"
|
||||
url: "{{ zerotier_api_url }}/api/network/{{ zerotier_network_id }}/member/{{ ansible_local.zerotier.node_id }}"
|
||||
method: POST
|
||||
headers:
|
||||
Authorization: bearer {{ zerotier_accesstoken }}
|
||||
|
|
@ -46,7 +32,6 @@
|
|||
delegate_to: "{{ zerotier_api_delegate }}"
|
||||
|
||||
when:
|
||||
- zerotier_accesstoken is defined
|
||||
- not ansible_check_mode
|
||||
tags:
|
||||
- configuration
|
||||
|
|
|
|||
|
|
@ -3,10 +3,20 @@
|
|||
- import_tasks: install.yml
|
||||
when:
|
||||
- not skip_install|default(false)|bool
|
||||
- ansible_local.zerotier is not defined
|
||||
|
||||
- block:
|
||||
- name: Update ansible_local facts
|
||||
script: set_facts.sh
|
||||
|
||||
- name: Re-gather facts
|
||||
setup: ~
|
||||
|
||||
|
||||
- import_tasks: authorize_node.yml
|
||||
when:
|
||||
- zerotier_accesstoken is defined
|
||||
- ansible_local.zerotier.node_id is defined
|
||||
|
||||
- import_tasks: join_network.yml
|
||||
when:
|
||||
|
|
|
|||
Loading…
Reference in New Issue