Automating depmod Command with Ansible

The depmod command in Linux is critical for generating module dependency information, stored in /lib/modules/<kernel-version>/modules.dep. This command is particularly useful when managing custom kernel modules or after installing new modules. Automating depmod with Ansible ensures consistency, reduces human error, and improves overall efficiency.


Why Automate depmod with Ansible?

  1. Consistency: Guarantees all systems have updated module dependencies.
  2. Speed: Saves time by automating repetitive tasks during updates or module installations.
  3. Error Reduction: Eliminates manual mistakes, such as forgetting to run depmod after kernel updates.
  4. Scalability: Manages multiple systems simultaneously using a single playbook.

What is depmod?

The depmod command analyzes kernel modules and generates dependency files used by modprobe and the kernel to automatically load required modules. Common use cases include:

  • Installing a new kernel.
  • Adding or removing kernel modules.
  • Customizing module configurations.

Ansible Playbook for Automating depmod

Here’s how to automate depmod using Ansible:

---
- name: Automate depmod execution
  hosts: all
  become: true
  tasks:
    - name: Run depmod command
      ansible.builtin.shell:
        cmd: depmod
      args:
        warn: false
      register: depmod_output

    - name: Debug depmod output
      ansible.builtin.debug:
        var: depmod_output.stdout

Explanation:

  • hosts: all: Specifies that the playbook applies to all hosts in the inventory.
  • become: true: Ensures the depmod command runs with elevated privileges.
  • ansible.builtin.shell: Executes the depmod command.
  • register: Captures the output of the command for debugging or further processing.
  • debug: Prints the output of depmod for verification.

Advanced Use Case: Conditional depmod Execution

Run depmod only when kernel modules are updated by using handlers:

---
- name: Manage kernel modules
  hosts: all
  become: true
  tasks:
    - name: Copy custom kernel module
      ansible.builtin.copy:
        src: /path/to/module.ko
        dest: /lib/modules/$(uname -r)/kernel/
      notify: Execute depmod

  handlers:
    - name: Execute depmod
      ansible.builtin.shell:
        cmd: depmod

This ensures depmod is executed only if a kernel module is modified.


Best Practices for Using Ansible with depmod

  1. Idempotency: Ensure tasks can be executed multiple times without causing issues.
  2. Security: Use become responsibly and avoid exposing sensitive data in playbooks.
  3. Testing: Always test playbooks in a staging environment before applying them in production.

Common Troubleshooting Tips

  • Permission Denied: Ensure become: true is set.
  • Incorrect Module Path: Verify module paths and compatibility with the kernel version.
  • Command Not Found: Make sure depmod is installed and in the system’s PATH.

Conclusion

Automating depmod with Ansible is an excellent way to streamline kernel module management across multiple systems. By incorporating this process into your automation workflows, you can reduce human error, enhance consistency, and improve efficiency. Whether managing a single system or a complex infrastructure, Ansible makes automation simple and scalable.

Take advantage of Ansible’s flexibility to manage kernel modules effectively and keep your systems running smoothly.

Subscribe to the YouTube channel, Medium, and Website, X (formerly Twitter) to not miss the next episode of the Ansible Pilot.

Academy

Learn how to automate file replication and distributed systems with Ansible in my Udemy 300+ Lessons Video Course.

BUY the Complete Udemy 300+ Lessons Video Course

My book Ansible By Examples: 200+ Automation Examples For Linux and Windows System Administrator and DevOps

BUY the Complete PDF BOOK to easily Copy and Paste the 250+ Ansible code

Support this project: Patreon Buy me a Pizza