dominion-solutions / ansible-netbird

Netbird Collection for Ansible
Other
8 stars 2 forks source link
ansible ansible-collections devops-tools galaxy netbird vpn wireguard zero-trust

dominion_solutions.netbird

This collection allows you to manage your netbird servers.

Required Python Libraries

Roles

dominion_solutions.netbird.netbird

Applying this role will install the netbird client on the target machine.

Documentation

Inventories

dominion_solutions.netbird.netbird

This is a dynamic inventory generated based on the configuration in the netbird API.

Documentation

Sample Inventory Setups

Retrieve All Netbird Peers in the Development group

---
plugin: dominion_solutions.netbird.netbird
api_url: https://api.netbird.io/api/
api_key: nbp_this_is_a_fake_api_key
netbird_groups:
  - Development
strict: No

Retrieve all Netbird Peers that are Connected

---
plugin: dominion_solutions.netbird.netbird
api_key: nbp_this_is_a_fake_api_key
api_url: https://netbird.example.com/api/
netbird_connected: True

A More Complex example

This example gets all peers in the All group and builds the additional connected and ssh_hosts groups, based on the keys.

---
plugin: dominion_solutions.netbird.netbird
api_key: nbp_this_is_a_fake_api_key
api_url: https://netbird.example.com/api/
netbird_connected: False
leading_separator: No
netbird_groups:
- "All"
groups:
  connected: connected
  ssh_hosts: ssh_enabled
strict: No
keyed_groups:
compose:
  ansible_ssh_host: label
  ansible_ssh_port: 22

Available data for custom groupings

Fields are taken directly from the responses at the Netbird Peers API unless otherwise indicated

Field Type Notes
label string label is a field generated as part of the inventory as an alias to the dns_label field.
id string
name string
ip string
connected boolean
last_seen string This is is an ISO-8601 UTC Date Time String
os string An OS Identifier such as Linux Mint 21.3 or Alpine Linux 3.19.1
version string The version of the Netbird Client that is running on the Peer
groups object The groups object. This is parsed into the the groups in the inventory by name.
enabled boolean
user_id string
hostname string The hostname part of the FQDN
ui_version string Blank if there's no UI client installed, otherwise a version for the UI such as netbird-desktop-ui/0.25.7
dns_label string The Fully Qualified Domain Name for this peer.
login_expiration_enabled boolean Is this peer exempt from login expiration?
login_expired boolean Is the login for this expired?
last_login string
approval_required boolean
accessible_peers_count integer

Contributing

Please see CONTRIBUTING.md

Contributors