RHEL-System registrieren und Subskription hinzufügen

Ein früher Schritt in unserem Bereitstellungsprozess für RHEL-Systeme umfasst die Registrierung des Systems im Red Hat Customer Portal und das Hinzufügen einer geeigneten Subskription. Um diese beiden Schritte zu automatisieren, nutze ich eine Ansible-Rolle, welche ich euch im Folgenden vorstellen möchte.

Umfeld

RHEL läuft bei uns vorwiegend innerhalb verschiedener Virtualisierungs-Cluster und vereinzelt auf dedizierten Servern (Blech). Wir nutzen für die Entwicklung und den Betrieb folgende Subskriptionen:

  • Red Hat Developer Subscription
  • Red Hat Enterprise Linux Server, Standard (Physical or Virtual Nodes)
  • Red Hat Enterprise Linux for Virtual Datacenters, Standard

Die Rolle ‚register-rhel-subscription‘

Meine Rolle kommt minimalistisch daher und besitzt folgende Strukur:

# tree roles/register-rhel-subscription               
roles/register-rhel-subscription
|-- defaults
|   `-- main.yml
|-- tasks
|   `-- main.yml

tasks/main.yml

---
# tasks file for register-rhel-subscription
# Register System and add Subcription
 - name: Register system and add subscription
   redhat_subscription:
     activationkey: "{{ org_activationkey }}"
     org_id: 1234567
     state: present

redhat_subscription ist ein Ansible-Modul, welches das Kommando subscription-manager verwendet, um Registrierung und Subskription eines Systems zu verwalten.

Dem Parameter activationkey wird ein Aktivierungsschlüssel übergeben, welcher zuvor im Customer Portal erstellt werden muss. Dieser Schlüssel ermöglicht eine Registrierung, ohne interaktive Eingabe von Benutzername und Kennwort. In obigem Code wird dem Parameter der Inhalt der Variable org_activationkey übergeben. Wie und wo diese Variable definiert wird, werde ich im nächsten Abschnitt erklären.

Die ebenfalls erforderliche org_id kann man mit dem folgenden Kommando in Erfahrung bringen: sudo subscription-manager identity

Durch state: present wird der gewünschte Zielzustand deklariert. In diesem Fall soll das System also registriert werden. Ändert man diesen Parameter zu state: absent wird das System entsprechend de-registriert.

defaults/main.yml

In dieser Datei wird der Standard-Wert für die Variable org_activationkey definiert.

---
# defaults file for register-rhel-subscription
org_activationkey: "my-datacenter-sub"

Der in dieser Datei spezifizierte Wert kann je nach Bedarf z.B. in host_vars und group_vars überschrieben werden (Siehe dazu: Using Variables). So kann bspw. über die Gruppenzugehörigkeiten im Inventory gesteuert werden, welche Subskription einem Host bzw. einer Gruppe von Hosts zugewiesen werden soll.

Beispiel-Playbook

---
- hosts: all
  tasks:
    - name: Group by OS
      group_by: key=os_{{ ansible_distribution }}
      changed_when: False

- hosts: os_RedHat
  roles:
    - register-rhel-subscription

Fazit

Diesen Text zu schreiben hat deutlich länger gedauert, als die eigentliche Aufgabe umzusetzen. Bisher macht diese Lösung einen robusten Eindruck.

Falls ihr Fragen oder Anregungen habt, sind diese in den Kommentaren herzlich willkommen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.