--- # Sistemiamo la ricerca per dominio, che potrebbe essere a ramengo. - name: Individuiamo l'interfaccia di rete nativa ansible.builtin.set_fact: nic: "{{ ansible_default_ipv4.interface }}" - name: Identifichiamo il profilo di connessione di NetworkManager ansible.builtin.shell: >- set -o pipefail; nmcli connection | awk -F" " "/{{ nic }}/ { print $1 }' args: executable: /bin/bash register: nm_connection - name: Forziamo il dominio di ricerca sulla connessione ansible.builtin.command: >- nmcli connection modify "{{ nm_connection.stdout|trim }}" ipv4.dns-search {{ domain }} - name: Forziamo temporaneamente per questa sessione il dominio di ricerca ansible.builtin.command: >- resolvectl domain {{ nic }} {{ domain }} # Assumiamo che il server DNS inserito risolva il dominio. # Consultiamo il DNS per ricevere informazioni sul domain controller. - name: Determiniamo il nome del domain controller ansible.builtin.shell: >- set -o pipeline; dig +short _ldap._tcp.{{ domain }} SRV | cut -d' ' -f 4 | sed -e 's/\.$//' args: executable: /bin/bash register: dcname - name: Determiniamo l'IP del domain controller ansible.builtin.command: dig +short {{ dcname.stdout | trim }}. register: dcipaddr - name: Impostiamo qualche fact ansible.builtin.set_fact: dc.name: "{{ dcname.stdout | trim }}" dc.shortname: "{{ dc.name.split('.')[0] }}" dc.ipaddr: "{{ dcipaddr | trim }}" - name: Verifichiamo che il PC effettivamente risolva gli shortname ansible.builtin.command: dig +short {{ dc.shortname }} register: check_shortnames failed_when: check_shortnames.stdout|trim != {{ dc.ipaddr }}