- name: Read the netbird status when: "netbird_client.join_network.setup_key | default('') | length > 0" command: netbird status -d register: netbird_status changed_when: false failed_when: false check_mode: false # Joined means connected to the management server of the vars; without a management_url any server counts. - name: Join netbird-network when: - "netbird_client.join_network.setup_key | default('') | length > 0" - netbird_status.stdout is not search(netbird_joined_pattern, multiline=True) vars: netbird_management_url: "{{ netbird_client.join_network.management_url | default('') }}" netbird_joined_pattern: "^Management: Connected{{ (' to ' ~ (netbird_management_url | regex_escape) ~ '$') if netbird_management_url != '' else '' }}" netbird_blacklist_extra: "{{ netbird_client.iface_blacklist_extra | default([]) }}" netbird_up_argv: >- {{ ['netbird', 'up'] + (['--management-url', netbird_management_url] if netbird_management_url != '' else []) + ['--setup-key', netbird_client.join_network.setup_key] + (['--extra-iface-blacklist', netbird_blacklist_extra | join(',')] if netbird_blacklist_extra | length > 0 else []) }} command: argv: "{{ netbird_up_argv }}" no_log: true changed_when: true register: join - name: Wait for netbird-interface to exist wait_for: path: "/sys/class/net/wt0" state: present when: join is changed - name: Gather facts to get changes ansible.builtin.gather_facts: when: join is changed