Skip to content

Keyboard Ansible Role

Manage keyboard layout on Debian-based and Red Hat-based systems by configuring keyboard settings and applying changes.

What this role does:

  • Installs required packages (console-setup, keyboard-configuration on Debian/Ubuntu; kbd, systemd on Fedora)
  • Renders /etc/default/keyboard with desired XKB settings
  • Applies the configuration (restart keyboard-setup, trigger udev, apply console keymap)

This role does not manage system locales.

Role Variables

Variable Default Type Description
keyboard_layout ch string Keyboard layout (e.g., ch, us, gb, de)
keyboard_variant de string Keyboard variant (e.g., de, fr, nodeadkeys, leave empty for none)
keyboard_model pc105 string Keyboard model (e.g., pc105)
keyboard_options [] list Extra keyboard options (e.g., ["ctrl:nocaps", "lv3:ralt_switch"])
keyboard_apply true bool Whether to apply changes immediately (reload service, trigger udev, etc.)

Example Playbook

- hosts: servers
  become: true
  roles:
    - role: keyboard

Custom layout:

- hosts: servers
  become: true
  roles:
    - role: keyboard
      vars:
        keyboard_layout: "gb"
        keyboard_variant: "intl"
        keyboard_model: "pc105"
        keyboard_options:
          - "ctrl:nocaps"

Note: X keyboard configuration affects both console and X11 on Debian/Ubuntu via /etc/default/keyboard. On Fedora systems, keyboard configuration is handled through systemd and localectl.