centos:ansible:pxe

Dies ist eine alte Version des Dokuments!


Installation eines Ansible-Orchestrator-Management-Hosts mit Hilfe eines Kickstartfiles für CentOS 8.x (PXE-Server)

Seite in der Entstehung, noch nicht aktuell! Wird laufend aktualisiert!

Kurz mal einen Rechner zu installieren, wie im Kapitel Installation von CentOS 8.x via PXE beschrieben und anschließend manuell dann anschließend Ansible mit Ansible einzurichten, wie hier beschrieben, mag auch eine Variante darstellen.

Wir wollen aber in folgendem Beispiel automatisiert unseren AOMH1) reproduzierbar vie PXE installieren, so dass wir ohne Umwege direkt mit der Arbeit beginnen und unsere Zielsysteme nach unseren Wünschen automatisiert zu bestücken.

Folgende Voraussetzungen müssen hierzu erfüllt werden:

  1. Der DHCP-Server muss für PXE konfiguriert werden und im Netz erreichbar sein.
  2. Ein TFTP-Server muss zur Verfügung stehen und im Netz erreichbar sein.
  3. Eine Definition des Bootmenüs mit entsprechenden Optionen wurde erfolgreich vorgenommen.
  4. Die Netzwerkkarte im Clientrechner muss PXE unterstützen!

Der Grundgedanke bei dieser Vorhaben ist, im Zweifel immer wieder exakt den gleichen Ansible-Ochestrator-Management-Host reproduzierbar aufzusetzen, werden wir das benötigte SSH-Schlüsselmaterial zu aller erst erzeugen und dann auch entsprechend sicher im physischen Safe wegsperren, so dass wir im Katastrophenfall darauf zurückgreifen zu können.

Im Kapitel Voraussetzung: SSH-Schlüssel haben wir uns bereits ausführlich mit der Thematik SSH-Schlüssel beschäftigt und auch gezeigt, wie dieser eerstellt wird.

Wir erstellen uns nun einen ED25519-Schlüssel (-t), mit einer festen Schlüssellänge. Der Parameter (-a) beschreibt dabei die Anzahl der KDF-Schlüsselableitfunktion (siehe manpage von ssh-keygen). Wir verwenden wieder als Beschreibung Ansible Systemuser (-C) und als Ziel-/Speicherort ~/.ssh/id_ed25519_ansible (-f).

  $ ssh-keygen -t ed25519 -a 100 -C 'Ansible Systemuser' -f ~/.ssh/id_ed25519_ansible
Generating public/private ed25519 key pair.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in ~/.ssh/id_ed25519_ansible.
Your public key has been saved in ~/.ssh/id_ed25519_ansible.pub.
The key fingerprint is:
SHA256:jTZQUDbCqZaV648fKVBfx3L4+tBMWL+z+iUCBY3kKMQ Ansible Systemuser
The key's randomart image is:
+--[ED25519 256]--+
|     o+==.oo     |
|     .E+ +.+.    |
|     ++.. = *    |
|    +..+ + O .   |
|   ...  S + o .  |
|     ... o *   . |
|      .oo o + + .|
|      .... o . = |
|       ..   ooo  |
+----[SHA256]-----

Die beiden Key-Files kopieren wir dann auf ein vertrauenswürdiges Medium, auf welches wir jederzeit wiieder zurückgreifen können.

 $ ll .ssh/
-r--------. 1 ansible ansible 411 Jun 20 13:08 id_ed25519_ansible
-rw-r--r--. 1 ansible ansible 100 Jun 20 13:08 id_ed25519_ansible.pub

Ob das nun ein sicherer USB-Speicherstick wie der Nitrokey Storage 2, ein Network Attached Storage oder eine vertrauenswürdige (Next)Cloud ist, muss natürlich jeder für sich selbst entscheiden.

Wie Eingangs schon angesprochen, wollen wir unseren Ansible-Orchestrator-Management-Host bei Bedarf immer nach dem gleichen Grundschema aufbauen, konfigurieren und auch härten. Wir werden also diese Aufgaben standardisieren und automatisch abarbeiten lassen.

Folgende Aufgaben wird unser Script für uns reproduzierbar künftig erledigen:

  1. Grundinstallation eines CentOS 8 Hosts (Minimalinstallation)
  2. IP-Adresse und Hostname Durch Angabe des Hostnamens beim Booten des Installationsimages wollen wir diesen setzen und auch die zugehörige IP-Adresse übernehmen lassen. (Der Hostname wir so z.B. auch bei der Definition der VolumeGroup eines LVMs verwendet.)
  3. Installations-Logfile zum Nachvollziehen der erfolgten INstallation unter /root/anaconda-postinstall.log anlegen.
  4. Bootloader Da wir beim Booten der Maschine detailierte Informationen sehen wollen werden wir die Option rhgb in der GRUB-Definition entfernen.
  5. MOTD und ISSUE.NET individualisieren inkl. Hostnamen
  6. SSH-Daemon Den SSH Daemon härten wir und passen die Konfigurationsdatei entsprechend an.
  7. SSH-Publickey Für unseren Admin-Account django hinterlegen wir den zugehörigen öffentlichen SSH-Schlüssel.
  8. Repositories Statt der öffentlichen, sollen nur noch die lokal gesyncten Repositories verwendet werden; daher macht es auch keinen Sinn die Einträge mirrorlist= in den entsprechenden repo-filers stehen zu lassen.
  9. Zusätzlich zum Standard soll auch noch das Repository EPEL eingebunden und genutzt werden.
  10. Update Zum Schluss stellen wir noch sicher dass alle installierten Pakete in der aktuellsten Version vorliegen und lassen dann das System neu starten.
  11. NFS-Client zur Verbindung NAS einrichten, damit später die Playbooks gesichert werden können.
  12. Ansible System-User erstellen und zuvor erstelltes Schlüsselmaterial hinterlegen
  13. Ansible: Directory Layout- Verzeichnisstruktur anlegen

Zur automatischen Installation und Konfiguration unseres Ansible-Orchestrator-Management-Hosts verwenden wir folgende Kickstart-Datei.

 # vim /srv/kickstart/ks_centos_8_x86_64_ansible.cfg
/srv/kickstart/ks_centos_8_x86_64_ansible.cfg
 

Damit nun beim Laden der Menüdatei bei PXE-Boot die überarbeitete Kickstart-Datei geladen werden kann, erweitern wir nun die Menü-Datei unseres PXE-Bootservers.

 # vim /var/lib/tftpboot/pxelinux.cfg/dmz-64

Dort tragen wir beim betreffenden LABEL die Optionen ks, net.ifnames und biosdevname sowie am Ende der Zeile SERVERNAME= ein.

LABEL 3
   MENU LABEL ^3) Installation von CentOS 8 (64 Bit)
   KERNEL images/centos/8/x86_64/vmlinuz
   APPEND ks=http://10.0.0.57/kickstart/ks_centos_8_x86_64_dmz.cfg initrd=images/centos/8/x86_64/initrd.img ksdevice=eth0 ip=dhcp --hostname=vml000250.dmz.nausch.org method=http://10.0.0.57/centos/8/BaseOS/x86_64/os/ net.ifnames=0 biosdevname=0 SERVERNAME=

Anschliessend starten wir wie gewohnt unsere virtuelle Maschine.

Bild: Bildschirmhardcopy der Installationskonfiguration

Zum Setzen des Hostnamens wählen wir nun wie gewünscht den betreffenden Menüpunkt aus, drücken dann aber NICHT die EINGABETASTE, sondern die Taste TAB! Anschliessend geben wir den Hostnamen ein.

Bild: Bildschirmhardcopy Auswahl PXE Bootmenü

Am Ende des Installationsvorganges werden wir informiert, dass das postinstall-script, welches wir per PXE-Boot bzw. genauer gesagt mit dem Kickstartfile mitgegeben hatten, ausgeführt wird.

Bild: Bildschirmhardcopy Anzeige "Ausführung postinstall script"

Nach kurzer Wartezeit haben wir ein neues, vorkonfiguriertes und vor allem aktuelles System, bei dem wir uns direkt per ssh verbinden können.

 $ ssh 10.0.0.50
The authenticity of host '10.0.0.50 (10.0.0.50)' can't be established.
ED25519 key fingerprint is SHA256:JKV0iNvjQGMhkWIGEPC1hQH/vzpbeabl1g7s46yhMj6.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.0.0.50' (ED25519) to the list of known hosts.
##############################################################################
#                                                                            #
#                       This is a private home server.                       #
#                                                                            #
#             Unauthorized access to this system is prohibited !             #
#                                                                            #
#    This system is actively monitored and all connections may be logged.    #
#         By accessing this system, you consent to this monitoring.          #
#                                                                            #
##############################################################################
##############################################################################
#                                                                            #
#                 This is the home server of Michael Nausch.                 #
#                                                                            #
#                            vml000050.nausch.org                            #
#                                                                            #
#             Unauthorized access to this system is prohibited !             #
#                                                                            #
#    This system is actively monitored and all connections may be logged.    #
#         By accessing this system, you consent to this monitoring.          #
#                                                                            #
##############################################################################

Die Netzwerkschnittstelle hat entsprechend die gewünschte Bezeichnung erhalten.

 # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:74:80:c2 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.50/24 brd 10.0.0.255 scope global noprefixroute eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe74:80c2/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

Das System ist auch mit den aktuellesten Programmpaketen bestückt.

 # dnf update
Last metadata expiration check: 0:12:20 ago on Sun 14 Jun 2020 01:49:52 PM CEST.
Dependencies resolved.
Nothing to do.
Complete!

1)
Ansible-Orchestrator-Management-Hosts
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
  • centos/ansible/pxe.1592731758.txt.gz
  • Zuletzt geändert: 21.06.2020 09:29.
  • von django