From 5bfb28d5b7edb56c01c0296157ccc25970fb8de6 Mon Sep 17 00:00:00 2001 From: Romain GRENIER Date: Fri, 18 Apr 2025 16:13:16 +0200 Subject: [PATCH 1/4] Add support for self-hosted Netbird instances and update README - Implemented logic to handle `netbird_deployment_mode` . - Added validation to ensure `netbird_management_url` is defined and non-empty when using self-hosted mode. - Updated README with detailed documentation for `netbird_deployment_mode` and `netbird_management_url`. --- roles/netbird/README.md | 4 ++++ roles/netbird/defaults/main.yml | 1 + roles/netbird/tasks/main.yml | 25 +++++++++++++++++++++---- 3 files changed, 26 insertions(+), 4 deletions(-) diff --git a/roles/netbird/README.md b/roles/netbird/README.md index 763665b..8297425 100644 --- a/roles/netbird/README.md +++ b/roles/netbird/README.md @@ -10,6 +10,10 @@ Role Variables -------------- - `netbird_setup_key`: The key that is used to automate the setup process. - `netbird_register`: A true/false defining whether or not register netbird. +- `netbird_deployment_mode`: Specifies the deployment mode for Netbird. It can be either: + - 'saas': For deploying Netbird using the SaaS instance. + - 'self-hosted': For deploying a self-hosted instance of Netbird. +- `netbird_management_url`: The management URL for the self-hosted instance. This variable is required if `netbird_deployment_mode` is set to `'self-hosted'`. Dependencies ------------ diff --git a/roles/netbird/defaults/main.yml b/roles/netbird/defaults/main.yml index 0c37aa2..b7480b4 100644 --- a/roles/netbird/defaults/main.yml +++ b/roles/netbird/defaults/main.yml @@ -1,2 +1,3 @@ --- # defaults file for netbird +netbird_deployment_mode: saas diff --git a/roles/netbird/tasks/main.yml b/roles/netbird/tasks/main.yml index 0e102cb..b8e0ac9 100644 --- a/roles/netbird/tasks/main.yml +++ b/roles/netbird/tasks/main.yml @@ -1,8 +1,14 @@ --- # tasks file for netbird +- name: Check if self-hosted installation comes with a netbird_management_url + ansible.builtin.assert: + that: netbird_management_url is defined and netbird_management_url != '' + fail_msg: "The management URL must be defined and non-empty for self-hosted installations." + when: deployment_mode == 'self-hosted' + - name: Check for Netbird Installation ansible.builtin.shell: - cmd: netbird --version + cmd: netbird version ignore_errors: true register: netbird_installed @@ -16,9 +22,20 @@ register: netbird_status changed_when: false ignore_errors: true - when: netbird_register is true + when: netbird_deployment_mode is true -- name: Start Netbird +- name: Start Netbird (SaaS mode) become: true ansible.builtin.shell: netbird up --setup-key="{{ netbird_setup_key }}" - when: netbird_register is true and 'NeedsLogin' in netbird_status.stdout + when: + - netbird_deployment_mode is true + - "'NeedsLogin' in netbird_status.stdout or 'LoginFailed' in netbird_status.stdout" + - deployment_mode == 'saas' + +- name: Start Netbird (Self-Hosted mode) + become: true + ansible.builtin.shell: netbird up --setup-key="{{ netbird_setup_key }}" --management-url="{{ netbird_management_url }}" + when: + - netbird_deployment_mode is true + - "'NeedsLogin' in netbird_status.stdout or 'LoginFailed' in netbird_status.stdout" + - deployment_mode == 'self-hosted' From fcdc3d5d241a20cdaf79c9abab002298f740d2fc Mon Sep 17 00:00:00 2001 From: Romain GRENIER Date: Fri, 18 Apr 2025 16:23:53 +0200 Subject: [PATCH 2/4] Renamed saas to cloud-hosted --- roles/netbird/README.md | 2 +- roles/netbird/defaults/main.yml | 2 +- roles/netbird/tasks/main.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/roles/netbird/README.md b/roles/netbird/README.md index 8297425..115fe82 100644 --- a/roles/netbird/README.md +++ b/roles/netbird/README.md @@ -11,7 +11,7 @@ Role Variables - `netbird_setup_key`: The key that is used to automate the setup process. - `netbird_register`: A true/false defining whether or not register netbird. - `netbird_deployment_mode`: Specifies the deployment mode for Netbird. It can be either: - - 'saas': For deploying Netbird using the SaaS instance. + - 'cloud-hosted': For deploying Netbird using the cloud-hosted instance. - 'self-hosted': For deploying a self-hosted instance of Netbird. - `netbird_management_url`: The management URL for the self-hosted instance. This variable is required if `netbird_deployment_mode` is set to `'self-hosted'`. diff --git a/roles/netbird/defaults/main.yml b/roles/netbird/defaults/main.yml index b7480b4..d20b183 100644 --- a/roles/netbird/defaults/main.yml +++ b/roles/netbird/defaults/main.yml @@ -1,3 +1,3 @@ --- # defaults file for netbird -netbird_deployment_mode: saas +netbird_deployment_mode: 'cloud-hosted' diff --git a/roles/netbird/tasks/main.yml b/roles/netbird/tasks/main.yml index b8e0ac9..da7894b 100644 --- a/roles/netbird/tasks/main.yml +++ b/roles/netbird/tasks/main.yml @@ -30,7 +30,7 @@ when: - netbird_deployment_mode is true - "'NeedsLogin' in netbird_status.stdout or 'LoginFailed' in netbird_status.stdout" - - deployment_mode == 'saas' + - deployment_mode == 'cloud-hosted' - name: Start Netbird (Self-Hosted mode) become: true From d669485adb09992483f63421d2f7aaa211d2244a Mon Sep 17 00:00:00 2001 From: Romain GRENIER Date: Fri, 18 Apr 2025 16:28:03 +0200 Subject: [PATCH 3/4] Rename variable netbird_management_url to netbird_mgmt_url --- roles/netbird/README.md | 2 +- roles/netbird/tasks/main.yml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/roles/netbird/README.md b/roles/netbird/README.md index 115fe82..8d0b790 100644 --- a/roles/netbird/README.md +++ b/roles/netbird/README.md @@ -13,7 +13,7 @@ Role Variables - `netbird_deployment_mode`: Specifies the deployment mode for Netbird. It can be either: - 'cloud-hosted': For deploying Netbird using the cloud-hosted instance. - 'self-hosted': For deploying a self-hosted instance of Netbird. -- `netbird_management_url`: The management URL for the self-hosted instance. This variable is required if `netbird_deployment_mode` is set to `'self-hosted'`. +- `netbird_mgmt_url`: The management URL for the self-hosted instance. This variable is required if `netbird_deployment_mode` is set to `'self-hosted'`. Dependencies ------------ diff --git a/roles/netbird/tasks/main.yml b/roles/netbird/tasks/main.yml index da7894b..dfe5e63 100644 --- a/roles/netbird/tasks/main.yml +++ b/roles/netbird/tasks/main.yml @@ -1,8 +1,8 @@ --- # tasks file for netbird -- name: Check if self-hosted installation comes with a netbird_management_url +- name: Check if self-hosted installation comes with a netbird_mgmt_url ansible.builtin.assert: - that: netbird_management_url is defined and netbird_management_url != '' + that: netbird_mgmt_url is defined and netbird_mgmt_url != '' fail_msg: "The management URL must be defined and non-empty for self-hosted installations." when: deployment_mode == 'self-hosted' @@ -34,7 +34,7 @@ - name: Start Netbird (Self-Hosted mode) become: true - ansible.builtin.shell: netbird up --setup-key="{{ netbird_setup_key }}" --management-url="{{ netbird_management_url }}" + ansible.builtin.shell: netbird up --setup-key="{{ netbird_setup_key }}" --management-url="{{ netbird_mgmt_url }}" when: - netbird_deployment_mode is true - "'NeedsLogin' in netbird_status.stdout or 'LoginFailed' in netbird_status.stdout" From 447ebe257fc05078bf39ea17dc69b69feb9e58ad Mon Sep 17 00:00:00 2001 From: Romain GRENIER Date: Fri, 18 Apr 2025 17:32:28 +0200 Subject: [PATCH 4/4] Remove netbird_deployment_mode and simplify instance selection with netbird_mgmt_url - Removed `netbird_deployment_mode` variable. - Updated logic to determine instance type based on `netbird_mgmt_url`. --- roles/netbird/README.md | 5 +---- roles/netbird/defaults/main.yml | 2 +- roles/netbird/tasks/main.yml | 23 ++++------------------- 3 files changed, 6 insertions(+), 24 deletions(-) diff --git a/roles/netbird/README.md b/roles/netbird/README.md index 8d0b790..26f67d4 100644 --- a/roles/netbird/README.md +++ b/roles/netbird/README.md @@ -10,10 +10,7 @@ Role Variables -------------- - `netbird_setup_key`: The key that is used to automate the setup process. - `netbird_register`: A true/false defining whether or not register netbird. -- `netbird_deployment_mode`: Specifies the deployment mode for Netbird. It can be either: - - 'cloud-hosted': For deploying Netbird using the cloud-hosted instance. - - 'self-hosted': For deploying a self-hosted instance of Netbird. -- `netbird_mgmt_url`: The management URL for the self-hosted instance. This variable is required if `netbird_deployment_mode` is set to `'self-hosted'`. +- `netbird_mgmt_url`: The management URL for the self-hosted instance. If not specified, defaults to the cloud-hosted instance (https://api.netbird.io:443). Dependencies ------------ diff --git a/roles/netbird/defaults/main.yml b/roles/netbird/defaults/main.yml index d20b183..b467fb1 100644 --- a/roles/netbird/defaults/main.yml +++ b/roles/netbird/defaults/main.yml @@ -1,3 +1,3 @@ --- # defaults file for netbird -netbird_deployment_mode: 'cloud-hosted' +netbird_mgmt_url: https://api.netbird.io:443 diff --git a/roles/netbird/tasks/main.yml b/roles/netbird/tasks/main.yml index dfe5e63..0a9b6ee 100644 --- a/roles/netbird/tasks/main.yml +++ b/roles/netbird/tasks/main.yml @@ -1,11 +1,5 @@ --- # tasks file for netbird -- name: Check if self-hosted installation comes with a netbird_mgmt_url - ansible.builtin.assert: - that: netbird_mgmt_url is defined and netbird_mgmt_url != '' - fail_msg: "The management URL must be defined and non-empty for self-hosted installations." - when: deployment_mode == 'self-hosted' - - name: Check for Netbird Installation ansible.builtin.shell: cmd: netbird version @@ -22,20 +16,11 @@ register: netbird_status changed_when: false ignore_errors: true - when: netbird_deployment_mode is true - -- name: Start Netbird (SaaS mode) - become: true - ansible.builtin.shell: netbird up --setup-key="{{ netbird_setup_key }}" - when: - - netbird_deployment_mode is true - - "'NeedsLogin' in netbird_status.stdout or 'LoginFailed' in netbird_status.stdout" - - deployment_mode == 'cloud-hosted' + when: netbird_register is true -- name: Start Netbird (Self-Hosted mode) +- name: Start Netbird become: true ansible.builtin.shell: netbird up --setup-key="{{ netbird_setup_key }}" --management-url="{{ netbird_mgmt_url }}" - when: - - netbird_deployment_mode is true + when: + - netbird_register is true - "'NeedsLogin' in netbird_status.stdout or 'LoginFailed' in netbird_status.stdout" - - deployment_mode == 'self-hosted'