]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-cm-ansible.git/commitdiff
nameserver: Support Ubuntu
authorDavid Galloway <david.galloway@ibm.com>
Fri, 20 Feb 2026 21:32:14 +0000 (16:32 -0500)
committerDavid Galloway <david.galloway@ibm.com>
Fri, 20 Feb 2026 21:54:45 +0000 (16:54 -0500)
Signed-off-by: David Galloway <david.galloway@ibm.com>
roles/nameserver/handlers/main.yml
roles/nameserver/tasks/config.yml
roles/nameserver/tasks/main.yml
roles/nameserver/tasks/packages.yml
roles/nameserver/templates/named.conf.j2
roles/nameserver/vars/Debian.yml [new file with mode: 0644]
roles/nameserver/vars/RedHat.yml [new file with mode: 0644]
roles/nameserver/vars/Suse.yml [new file with mode: 0644]
roles/nameserver/vars/packages_redhat.yml [deleted file]
roles/nameserver/vars/packages_suse.yml [deleted file]

index 248f51cf7bc6aae70770dfa9cf74ca0a12ffdc2f..d3bee8bd3d26e806dd4db198536c5217371fa063 100644 (file)
@@ -2,11 +2,11 @@
 # Restart for config file updates
 - name: restart named
   service:
-    name: named
+    name: "{{ bind_service }}"
     state: restarted
 
 # Reload for zone file updates
 - name: reload named
   service:
-    name: named
+    name: "{{ bind_service }}"
     state: reloaded
index 9e0fe3ab718a7b3df7d851cc866f047b3577ae8d..ced19bb51885d650bdfbc6e3dc8206401d66af5f 100644 (file)
@@ -3,8 +3,8 @@
   file:
     path: "{{ named_conf_data_dir }}"
     state: directory
-    owner: named
-    group: named
+    owner: "{{ bind_user }}"
+    group: "{{ bind_group }}"
 
 - name: Create named.conf
   template:
     - ansible_selinux.status == "enabled"
 
 # Helps prevent accidental DoS
+- name: Ensure nf_conntrack module is loaded
+  modprobe:
+    name: nf_conntrack
+    state: present
+  failed_when: false
+
 - name: Double maximum configured connections
   sysctl:
     name: net.nf_conntrack_max
index a5bdf258f3dcf6032da6417d989ed801bde389d8..f18c3cbbcd67225c9c4a9baf6ab646da5284010e 100644 (file)
@@ -8,14 +8,57 @@
   tags:
     - always
 
+- name: Import distro-specific vars
+  include_vars: "{{ ansible_os_family }}.yml"
+  tags:
+    - always
+
 # Install and update system packages
 - import_tasks: packages.yml
   tags:
     - packages
 
-- name: Enable and start ntpd
+- name: Gather facts after installing packages
+  service_facts:
+  tags:
+    - always
+
+- name: Determine which time service exists (chrony/ntp/timesyncd)
+  set_fact:
+    time_services: "{{ ansible_facts.services.keys() | list }}"
+    timesyncd_service_name: >-
+      {{ 'systemd-timesyncd' if 'systemd-timesyncd.service' in ansible_facts.services else '' }}
+    chrony_service_name: >-
+      {{
+        'chronyd' if 'chronyd.service' in ansible_facts.services
+        else ('chrony' if 'chrony.service' in ansible_facts.services else '')
+      }}
+    ntp_service_name: >-
+      {{
+        'ntpd' if 'ntpd.service' in ansible_facts.services
+        else ('ntp' if 'ntp.service' in ansible_facts.services else '')
+      }}
+  tags:
+    - always
+
+- name: Set time_service_name
+  set_fact:
+    time_service_name: >-
+      {{
+        chrony_service_name
+        if chrony_service_name|length > 0
+        else (
+          ntp_service_name
+          if ntp_service_name|length > 0
+          else timesyncd_service_name
+        )
+      }}
+  tags:
+    - always
+
+- name: "Enable and start {{ time_service_name }}"
   service:
-    name: ntpd
+    name: "{{ time_service_name }}"
     state: started
     enabled: yes
   tags:
     path: "{{ named_conf_zones_path }}"
     mode: '0700'
     state: directory
-    owner: named
-    group: named
+    owner: "{{ bind_user }}"
+    group: "{{ bind_group }}"
   tags:
     - always
 
 # Configure firewalld
 - import_tasks: firewall.yml
+  when: ansible_os_family != "Debian"
   tags:
     - firewall
 
index 7c9fd503763147459d36a1613f59a39a0c28df0a..939bd49d198f9ea026dc3e8f1f150d52b894c130 100644 (file)
@@ -1,12 +1,4 @@
 ---
-- name: Include nameserver package list
-  include_vars: packages_redhat.yml
-  when: ansible_os_family == "RedHat"
-
-- name: Include nameserver package list
-  include_vars: packages_suse.yml
-  when: ansible_os_family == "Suse"
-
 - name: Install and update packages via yum
   yum:
     name: "{{ packages }}"
   when: ansible_pkg_mgr == "zypper"
   tags:
     - packages
+
+- name: Install and update packages via apt
+  apt:
+    name: "{{ packages }}"
+    state: latest
+    update_cache: yes
+  when: ansible_pkg_mgr == "apt"
+  tags:
+    - packages
index ffccc22803ca40a99c8c2dbe1d81d21cea244daf..c0dfd84ff640b771e935ee657fbcc93eb9b6e340 100644 (file)
@@ -80,11 +80,10 @@ zone "{{ key }}" {
 {% for key, zone in named_domains.items() %}
 {% if zone.reverse is defined and zone.reverse.0 is defined %}
 {% for reverse in zone.reverse %}
-{% if ansible_env._ == "/usr/bin/python3" %}
-{% set octet1,octet2,octet3,_ = reverse.split('.') %}
-{% else %}
-{% set octet1,octet2,octet3 = reverse.split('.') %}
-{% endif %}
+{% set parts = reverse.split('.') %}
+{% set octet1 = parts[0] %}
+{% set octet2 = parts[1] %}
+{% set octet3 = parts[2] %}
 zone "{{ octet3 }}.{{ octet2 }}.{{ octet1 }}.in-addr.arpa" {
 {% if named_conf_slave is defined and named_conf_slave == true %}
        type    slave;
diff --git a/roles/nameserver/vars/Debian.yml b/roles/nameserver/vars/Debian.yml
new file mode 100644 (file)
index 0000000..90a50c5
--- /dev/null
@@ -0,0 +1,19 @@
+---
+packages:
+  ## misc tools
+  - vim
+  - wget
+  - plocate
+  - git
+  ## bind-specific packages
+  - bind9
+  - bind9utils
+  ## for NTP
+  - ntp
+  - ntpdate
+
+bind_service: bind9
+bind_user: bind
+bind_group: bind
+
+named_conf_zones_path: /etc/bind/zones
diff --git a/roles/nameserver/vars/RedHat.yml b/roles/nameserver/vars/RedHat.yml
new file mode 100644 (file)
index 0000000..f76cfbe
--- /dev/null
@@ -0,0 +1,25 @@
+---
+packages:
+  ## misc tools
+  - vim
+  - wget
+  - mlocate
+  - git
+  - redhat-lsb-core
+  ## bind-specific packages
+  - bind
+  - bind-utils
+  ## firewall
+  - firewalld
+  ## monitoring
+  - nrpe
+  - nagios-plugins-all
+  ## for NTP
+  - ntp
+  - ntpdate
+
+bind_service: named
+bind_user: named
+bind_group: named
+
+named_conf_zones_path: /var/named/zones
diff --git a/roles/nameserver/vars/Suse.yml b/roles/nameserver/vars/Suse.yml
new file mode 100644 (file)
index 0000000..82e9e6c
--- /dev/null
@@ -0,0 +1,27 @@
+---
+packages:
+  ## misc tools
+  - vim
+  - wget
+  - mlocate
+  - git
+  - lsb
+  ## bind-specific packages
+  - bind
+  - bind-utils
+  ## firewall
+  - firewalld
+  ## monitoring
+  - nrpe
+  - nagios-plugins-all
+  ## for NTP
+  - ntp
+  #- ntpdate
+  # do we really need selinux on opensuse?
+  - python-selinux
+
+bind_service: named
+bind_user: named
+bind_group: named
+
+named_conf_zones_path: /var/lib/named
diff --git a/roles/nameserver/vars/packages_redhat.yml b/roles/nameserver/vars/packages_redhat.yml
deleted file mode 100644 (file)
index ee3222f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
----
-packages:
-  ## misc tools
-  - vim
-  - wget
-  - mlocate
-  - git
-  - redhat-lsb-core
-  ## bind-specific packages
-  - bind
-  - bind-utils
-  ## firewall
-  - firewalld
-  ## monitoring
-  - nrpe
-  - nagios-plugins-all
-  ## for NTP
-  - ntp
-  - ntpdate
diff --git a/roles/nameserver/vars/packages_suse.yml b/roles/nameserver/vars/packages_suse.yml
deleted file mode 100644 (file)
index 341e68f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
----
-packages:
-  ## misc tools
-  - vim
-  - wget
-  - mlocate
-  - git
-  - lsb
-  ## bind-specific packages
-  - bind
-  - bind-utils
-  ## firewall
-  - firewalld
-  ## monitoring
-  - nrpe
-  - nagios-plugins-all
-  ## for NTP
-  - ntp
-  #- ntpdate
-  # do we really need selinux on opensuse?
-  - python-selinux