Rocky Linux

Im Dezember letzten Jahres wurde bekannt, dass es im CentOS-Projekt einschneidende Änderungen geben wird. CentOS 8 wird noch bis zum 31.12.2021 entwickelt und CentOS 9 wird es nicht mehr geben. Wir haben uns den ersten Release Candidate der Alternative Rocky Linux angeschaut, in unsere Infrastruktur eingebaut und damit Erfahrungen gesammelt.

Der Weg zu Rocky Linux

Im Jahr 1994 kreierte Marc Ewing eine eigene Linux-Distribution, die er Red Hat Linux nannte. Den Namen wählte er nach der roten Lacrosse-Mütze, die ihm sein Grossvater zu dieser Zeit schenkte. Ein Jahr später gründete er mit Bob Young zusammen Red Hat Software und von da an wuchs Red Hat Linux zu einem viel beachteten Betriebssystem. Der Erfolg der beiden war enorm und ihre später zu Red Hat Enterprise Linux (RHEL) umbenannte Linux Distribution wurde zu einem der wichtigsten Betriebssysteme im Server-Umfeld. Da der Quellcode Open Source war und ist, konnte dieser weiterverwendet und das Betriebssystem unter anderen Namen veröffentlicht werden.

So entstand 2004 mit CentOS eine Linux-Distribution, die auf RHEL basierte. Diese beinhaltete zwar keinen direkten Support aber sie kam auch ohne kostenpflichtige Subscriptions aus. Die Distribution war beliebt und im Jahr 2014 machte Red Hat bekannt, dass sie ab sofort CentOS sponsoren und fördern. Am 8. Dezember 2020 folgte dann die Nachricht, dass CentOS in Zukunft nicht mehr als sogenannte Downstream Distribution erhältlich sein wird, sondern nur noch als CentOS-Stream – die Upstream-Variante – entwickelt wird.

Mit diesem Wechsel werden Patches und Updates nicht mehr nachdem („downstream“), sondern bevor („upstream“) die Patches und Updates in RHEL veröffentlicht werden, Einzug erhalten. Kurze Zeit nach der Verbreitung dieser Neuigkeiten startete mit Gregory Kurtzer eines der Gründungsmitglieder von CentOS einen Aufruf und suchte nach Entwicklerinnen und Entwicklern, die bereit waren an einem Nachfolger von CentOS mitzuwirken. Nach acht Stunden haben sich 250 Personen gemeldet. Rocky Linux war geboren. Der Name „Rocky“ ist übrigens eine Hommage an Rocky McGaugh – ein verstorbener Mitgründer von CentOS. Ende April 2021 ist nun der erste Release Candidate von Rocky Linux erschienen. Wir haben uns sogleich daran gemacht die Linux-Distro in unsere Infrastruktur einzubinden und zu testen.

Download und Installation


Unter https://rockylinux.org/download stehen für die Architekturen x86_64 und ARM64 genau wie bei CentOS die ISO’s „minimal“, „DVD“ und „boot“ zur Verfügung. Wir haben das DVD-ISO in unsere Umgebung eingebunden und die Installation via unserem Foreman-Server gestartet. Dabei haben wir dieselben Kickstart-Files verwendet wie bei CentOS-Installationen. In unserem Fall hat dies Out-Of-The-Box funktioniert und nach ein paar Minuten konnten wir in unser erstes Rocky Linux booten.

[root@Puzzle-Rocky ~]# cat /etc/redhat-release
Rocky Linux release 8.3
[root@Puzzle-Rocky ~]# uname -a

YUM-Repositories

Alle verfügbaren Rocky Linux Mirrors sind auf mirrors.rockylinux.org zu finden. Wir haben uns für den offiziellen Mirror unter http://dl.rockylinux.org entschieden und die Repositories in unseren Pulp-Server synchronisiert. Schwierigkeiten gab es dabei keine. Der Vorgang ist mit dem Einbinden von CentOS Repos identisch. Wer seine Konfigurationen nicht mit Ansible verwaltet und Pulp verwendet, der kann mit den folgenden Befehlen die Repos hinzufügen:

$ pulp-admin rpm repo create --repo-id=Rocky8-BaseOS \
--feed=https://dl.rockylinux.org/pub/rocky/8.3/BaseOS/x86_64/os/ \
--relative-url=Rocky8/BaseOS
$ pulp-admin rpm repo create --repo-id=Rocky8-AppStream \
--feed=https://dl.rockylinux.org/pub/rocky/8.3/AppStream/x86_64/os/ \
--relative-url=Rocky8/AppStream
$ pulp-admin rpm repo sync run --repo-id=Rocky8-BaseOS
$ pulp-admin rpm repo sync run --repo-id=Rocky8-AppStream

Ansible on Rocky Linux

Diese neuen Repositories wollten wir unserem Rocky Server zur Verfügung stellen. Jegliche Server-Konfigurationen nehmen wir mit Ansible vor und so waren nun ein paar Anpassungen fällig. Die Rolle welche den Servern die korrekten YUM-Repositories konfigurierte, war bisher nur auf RHEL und CentOS ausgelegt. Dabei wird die Konfiguration anhand er Ansible-Facts zur Distribution vorgenommen – bei Rocky Linux waren diese so gesetzt:

"ansible_distribution": "Rocky",
"ansible_distribution_file_parsed": true,
"ansible_distribution_file_path": "/etc/redhat-release",
"ansible_distribution_file_variety": "RedHat",
"ansible_distribution_major_version": "8",
"ansible_distribution_release": "NA",
"ansible_distribution_version": "8.",

Folglich haben wir unseren Ansible-Code an entsprechender Stelle erweitert:

- name: block for rocky
  block:
    - name: include repotasks for rocky8
      import_tasks: repos_rocky8.yml
    when: ansible_distribution_major_version == '8'
  when: ansible_distribution == 'Rocky'

Im oben importierten Ansible Task-File repos_rocky8.yml werden die Repos schlussendlich eingebunden.

- name: Add Rocky repos with gpgcheck enabled
  yum_repository:
    name: "Rocky8-{{ item }}"
    description: "Rocky8-{{ item }}"
    baseurl: "https://pulp.puzzle.ch/pulp/repos/Rocky8/{{ item }}"
    gpgcheck: yes
    gpgkey: file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial
    state: present
  loop:
    - BaseOS
    - AppStream

Folgende Repo-Definitionen unter /etc/yum.repos.d/ haben wir via Ansible gelöscht, weil wir ausschliesslich die Repos auf unserem Pulp-Server verwenden wollen:

  • Rocky-Devel.repo
  • Rocky-Media.repo
  • Rocky-AppStream.repo
  • Rocky-Extras.repo
  • Rocky-PowerTools.repo
  • Rocky-BaseOS.repo
  • Rocky-HighAvailability.repo
  • Rocky-Sources.repo

Dies waren die einzigen Änderungen, die in unserer Umgebung nötig waren. Sämtliche Ansible Playbooks liefen auf Anhieb erfolgreich durch. Ebenfalls erfolgreich verlief ein einfacher Funktionstest eines Apache Webservers.

Rocky Linux in der Cloud

In einem anderen Teil unserer Infrastruktur bauen wir mit Gitlab und Hashicorps‘ Packer automatisch Images für verschiedene Cloudanbieter. Das Einbinden von Rocky Linux war auch hier ein No-Brainer: Die einzige Anpassung gegenüber der CentOS-Konfiguration war das Setzen der Rocky Linux Repositories und URL’s im Kickstart-cfg und in der Packer JSON Konfig:

geänderte Zeile Kickstart-CFG File:
(Zeilenumbrüche nicht originalgetreu)

<...>
### Mirror settings 
url --url="https://download.rockylinux.org/pub/rocky/8.3/BaseOS/x86_64/os/"
repo --name="AppStream \
--baseurl="https://download.rockylinux.org/pub/rocky/8.3/AppStream/x86_64/os/"
<...>

geänderte Zeile Packer JSON-Konfig:
(Zeilenumbrüche nicht originalgetreu)

<...>
"iso_url": "https://download.rockylinux.org/pub/rocky/
            8.3/isos/x86_64/Rocky-8.3-x86_64-boot.iso",
"iso_checksum": "sha256:7a0c39ec8c271c6112ea37ed9767d4
                 ab98107a6c778e03d34d16cd5e4e0285f0",
<...>

Fazit

Welcher Nachfolger von CentOS ist nun der Beste? Ist es CentOS-Stream? Ist es RHEL mit einer Self-Supported und kostenfreien Subscripton, die Red Hat anbietet? Ist es Rocky Linux oder gar Alma Linux, eine weitere bereits veröffentlichte Downstream-Distro von RHEL? Diese Frage wird jedes Unternehmen für sich entscheiden müssen.

Wir konnten zeigen, dass der Wechsel von CentOS zu Rocky Linux sehr einfach und der Aufwand gering ist. Für den Gebrauch von Rocky Linux spricht, dass grosse Sponsoren wie AWS mit an Bord sind und wichtige Personen der Open Source Community wie z.B. Jeff Geerling auf Rocky Linux setzen. Dass mit Gregory Kurtzer ein Mitgründer von CentOS bei Rocky Linux mit dabei ist, dürfte für viele ein weiterer Grund sein, wieso an eine Zukunft mit Rocky Linux zu glauben ist. Diese Zukunft dürfte bald starten: Im Q2 2021 soll der erste Stable Release von Rocky Linux erscheinen.

2 Kommentare

  • Nelson, 13. Mai 2021

    Hello PuzzleITC.

    Vielen Dank für diesen wertvollen Beitrag.

    Weiter so!

  • mm
    Valentina Scherwey, 14. Mai 2021

    Lieber Nelson,
    Herzlichen Dank! Wir leiten das Kompliment gerne an den Autor weiter. Wir wünschen dir ein schönes Auffahrts-Wochenende.
    Liebe Grüsse