refactor ♻️: Refactored the code to use a more structured approach for DNS configuration and added optional tests.
Updated the role to include optional tests after running it, ensuring that DNS resolution is correctly configured. The code has been refactored to improve readability and maintainability.
This commit is contained in:
11
README.md
11
README.md
@@ -1,3 +1,12 @@
|
||||
# ansible_samba_domain_member
|
||||
|
||||
Install and configure Samba + Kerberos to join AD
|
||||
Install and configure Samba + Kerberos to join AD
|
||||
|
||||
|
||||
🧪 Optional Tests
|
||||
|
||||
After running the role:
|
||||
|
||||
# DNS should resolve domain controllers:
|
||||
dig _ldap._tcp.{{ dns_search }} SRV
|
||||
host dc1.{{ dns_search }}
|
||||
@@ -3,3 +3,8 @@ ad_realm: EXAMPLE.COM
|
||||
ad_dc: dc1.example.com
|
||||
ad_admin_user: administrator
|
||||
ad_admin_password: YourPassword
|
||||
dns_servers:
|
||||
- 192.168.1.10
|
||||
- 192.168.1.11
|
||||
dns_search: example.com
|
||||
nm_connection_name: "Wired connection 1" # Change this based on your setup
|
||||
|
||||
11
handlers/main.yml
Normal file
11
handlers/main.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
# handlers/main.yml
|
||||
- name: Restart networking if required
|
||||
service:
|
||||
name: networking
|
||||
state: restarted
|
||||
when: ansible_service_mgr == "systemd"
|
||||
|
||||
- name: Restart systemd-resolved
|
||||
service:
|
||||
name: systemd-resolved
|
||||
state: restarted
|
||||
@@ -1,4 +1,67 @@
|
||||
---
|
||||
- name: Gather service facts
|
||||
service_facts:
|
||||
|
||||
- name: Determine DNS manager
|
||||
set_fact:
|
||||
dns_manager: >-
|
||||
{% if 'systemd-resolved.service' in ansible_facts.services and ansible_facts.services['systemd-resolved.service'].state == 'running' %}
|
||||
systemd-resolved
|
||||
{% elif 'NetworkManager.service' in ansible_facts.services and ansible_facts.services['NetworkManager.service'].state == 'running' %}
|
||||
NetworkManager
|
||||
{% else %}
|
||||
manual
|
||||
{% endif %}
|
||||
|
||||
- name: Configure DNS for systemd-resolved
|
||||
when: dns_manager == 'systemd-resolved'
|
||||
template:
|
||||
src: resolved.conf.j2
|
||||
dest: /etc/systemd/resolved.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: Restart systemd-resolved
|
||||
|
||||
- name: Ensure /etc/resolv.conf points to systemd stub
|
||||
when: dns_manager == 'systemd-resolved'
|
||||
file:
|
||||
src: /run/systemd/resolve/stub-resolv.conf
|
||||
dest: /etc/resolv.conf
|
||||
state: link
|
||||
force: true
|
||||
|
||||
- name: Configure DNS via NetworkManager (nmcli)
|
||||
when: dns_manager == 'NetworkManager'
|
||||
block:
|
||||
- name: Set DNS servers with nmcli
|
||||
shell: >
|
||||
nmcli con mod "{{ nm_connection_name }}"
|
||||
ipv4.dns "{{ dns_servers | join(' ') }}"
|
||||
ipv4.ignore-auto-dns yes
|
||||
args:
|
||||
warn: false
|
||||
|
||||
- name: Set search domain with nmcli
|
||||
shell: >
|
||||
nmcli con mod "{{ nm_connection_name }}"
|
||||
ipv4.dns-search "{{ dns_search }}"
|
||||
args:
|
||||
warn: false
|
||||
|
||||
- name: Bring connection down and up to apply changes
|
||||
shell: >
|
||||
nmcli con down "{{ nm_connection_name }}" && nmcli con up "{{ nm_connection_name }}"
|
||||
ignore_errors: true
|
||||
|
||||
when: dns_manager == 'manual'
|
||||
template:
|
||||
src: resolv.conf.j2
|
||||
dest: /etc/resolv.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
|
||||
- name: Install required packages
|
||||
apt:
|
||||
name:
|
||||
@@ -10,6 +73,15 @@
|
||||
state: present
|
||||
become: yes
|
||||
|
||||
- name: Configure /etc/resolv.conf for AD DNS resolution
|
||||
template:
|
||||
src: resolv.conf.j2
|
||||
dest: /etc/resolv.conf
|
||||
owner: root
|
||||
group: root
|
||||
mode: '0644'
|
||||
notify: Restart networking if required
|
||||
|
||||
- name: Configure Kerberos
|
||||
template:
|
||||
src: krb5.conf.j2
|
||||
|
||||
4
templates/resolv.conf.j2
Normal file
4
templates/resolv.conf.j2
Normal file
@@ -0,0 +1,4 @@
|
||||
search {{ dns_search }}
|
||||
{% for server in dns_servers %}
|
||||
nameserver {{ server }}
|
||||
{% endfor %}
|
||||
4
templates/resolved.conf.j2
Normal file
4
templates/resolved.conf.j2
Normal file
@@ -0,0 +1,4 @@
|
||||
[Resolve]
|
||||
DNS={{ dns_servers | join(' ') }}
|
||||
Domains={{ dns_search }}
|
||||
FallbackDNS=
|
||||
Reference in New Issue
Block a user