diff options
| author | 2025-07-08 12:27:55 +0000 | |
|---|---|---|
| committer | 2025-07-08 12:27:55 +0000 | |
| commit | 5d7d3e3a4ecf0cab731fe800711402fba008b31f (patch) | |
| tree | 5613319aea5ca9dbc413cf7529596b0ad40d6ab7 | |
| parent | Initial analysis of LDAP automatic updates requirement (diff) | |
Add dnf-automatic configuration for LDAP server automatic updates
Co-authored-by: jb3 <[email protected]>
| -rw-r--r-- | ansible/roles/ldap/README.md | 16 | ||||
| -rw-r--r-- | ansible/roles/ldap/handlers/main.yml | 14 | ||||
| -rw-r--r-- | ansible/roles/ldap/tasks/main.yml | 31 | ||||
| -rw-r--r-- | ansible/roles/ldap/templates/dnf-automatic.conf.j2 | 58 | 
4 files changed, 119 insertions, 0 deletions
diff --git a/ansible/roles/ldap/README.md b/ansible/roles/ldap/README.md index a3b79c8..448e781 100644 --- a/ansible/roles/ldap/README.md +++ b/ansible/roles/ldap/README.md @@ -7,3 +7,19 @@ Note that the actual installation process and subsequent setup steps from  `ipa-server-install` must unfortunately be performed manually, as the automation  of this process is not something that we have deemed critical to automate at  this stage. + +## Automatic Updates + +This role configures `dnf-automatic` on Rocky Linux hosts to automatically +install security updates. The configuration: + +- Downloads and installs security updates automatically +- Uses the default systemd timer schedule (daily) +- Sends notifications to stdio (visible in systemd journal) +- Reduces the manual maintenance burden for security patches + +The dnf-automatic service runs via systemd timer and can be monitored using: +```bash +systemctl status dnf-automatic.timer +journalctl -u dnf-automatic.service +``` diff --git a/ansible/roles/ldap/handlers/main.yml b/ansible/roles/ldap/handlers/main.yml new file mode 100644 index 0000000..fd20152 --- /dev/null +++ b/ansible/roles/ldap/handlers/main.yml @@ -0,0 +1,14 @@ +--- +- name: Reload the firewall +  service: +    name: firewalld +    state: reloaded +  tags: +    - role::ldap + +- name: Restart dnf-automatic timer +  systemd: +    name: dnf-automatic.timer +    state: restarted +  tags: +    - role::ldap diff --git a/ansible/roles/ldap/tasks/main.yml b/ansible/roles/ldap/tasks/main.yml index 5e1c5c8..ddee81c 100644 --- a/ansible/roles/ldap/tasks/main.yml +++ b/ansible/roles/ldap/tasks/main.yml @@ -7,6 +7,37 @@    tags:      - role::ldap +- name: Install dnf-automatic for automatic updates +  package: +    name: +      - dnf-automatic +    state: present +  when: ansible_distribution == "Rocky" +  tags: +    - role::ldap + +- name: Configure dnf-automatic +  template: +    src: dnf-automatic.conf.j2 +    dest: /etc/dnf/automatic.conf +    owner: root +    group: root +    mode: '0644' +  when: ansible_distribution == "Rocky" +  notify: +    - Restart dnf-automatic timer +  tags: +    - role::ldap + +- name: Enable and start dnf-automatic timer +  systemd: +    name: dnf-automatic.timer +    enabled: true +    state: started +  when: ansible_distribution == "Rocky" +  tags: +    - role::ldap +  - name: Create firewall rules for FreeIPA    ansible.posix.firewalld:      service: "{{ item }}" diff --git a/ansible/roles/ldap/templates/dnf-automatic.conf.j2 b/ansible/roles/ldap/templates/dnf-automatic.conf.j2 new file mode 100644 index 0000000..3a4ff48 --- /dev/null +++ b/ansible/roles/ldap/templates/dnf-automatic.conf.j2 @@ -0,0 +1,58 @@ +# {{ ansible_managed }} + +[commands] +#  What kind of upgrade to perform: +# default                            = all available upgrades +# security                           = only the security upgrades +upgrade_type = security +random_sleep = 0 + +# Maximum time in seconds to wait until the system is on-line and able to +# connect to remote repositories. +network_online_timeout = 60 + +# To just receive updates use dnf-automatic-notifyonly.timer + +# Whether updates should be downloaded when they are available. +download_updates = yes + +# Whether updates should be applied when they are available.  Note that +# download_updates must also be yes for the update to be applied. +apply_updates = yes + +[emitters] +# Name to use for this system in messages that are emitted.  Default is the +# hostname. +# system_name = my-host + +# How to send messages.  Valid options are stdio, email and motd.  If +# emit_via includes stdio, messages will be sent to stdout; this is useful +# to have cron send the messages.  If emit_via includes email, this +# program will send email itself according to the configured options. +# If emit_via includes motd, /etc/motd file will have a message appended. +# Default is email,stdio. +# emit_via = stdio +emit_via = stdio + +[email] +# The address to send email messages from. +email_from = root@{{ ansible_fqdn }} + +# List of addresses to send messages to. +email_to = root + +# Name of the host to connect to to send email messages. +email_host = localhost + +[base] +# This section overrides dnf.conf + +# Use this to filter Yum core messages +# -4: critical +# -3: error +# -2: warning +# -1: info (default) +# 0: debug +# 1: trace +# 2: all +# debuglevel = 1
\ No newline at end of file  |