Wie man

Erstellen Sie ein benutzerdefiniertes RHEL / CentOS 8-AMI für AWS mit Image Builder

Erstellen Sie ein benutzerdefiniertes RHEL / CentOS 8-AMI für AWS mit Image Builder

In diesem Handbuch werden wir diskutieren, wie man mit Image Builder ein benutzerdefiniertes RHEL 8 / CentOS 8 AMI für AWS erstellen kann. Für Neueinsteiger bei Image Builder ist es ein Tool zum Erstellen benutzerdefinierter System-Images von Red Hat Enterprise Linux, einschließlich System-Images, die für die Bereitstellung auf Cloud-Plattformen vorbereitet sind.

Der Image Builder verarbeitet automatisch Server-Setup-Details für jede Image-Ausgabe und ist daher schneller als manuelle Methoden der Image-Erstellung. Ein Kommandozeilen-Tool Komponisten-Kli, ist verfügbar, sowie eine grafische Benutzeroberfläche in der Cockpit-Webkonsole.

Image Builder-Blöcke

Ausgabeformate von Image Builder

Mit dem Image Builder können Sie Bilder für mehrere Ausgabeformate erstellen. Siehe Tabelle unten.

BeschreibungCLI-NameDateierweiterung
QEMU QCOW2 Bildqcow2.qcow2
Ext4-Dateisystem-Imageext4-Dateisystem.img
Raw-partitioniertes Festplatten-Imagepartitionierte Festplatte.img
Live bootfähiges ISOleben-iso.iso
TAR-ArchivTeer.Teer
Amazon Machine Image Diskami.ami
Azure Disk-Imagevhd.vhd
Festplatte der virtuellen VMware-Maschinevmdk.vmdk
Offener Stapeloffener Stapel.qcow2

Schritt 1: Image Builder-Pakete installieren

Bevor Sie Image Builder verwenden können, müssen die folgenden Pakete installiert werden.

sudo yum -y install vim lorax-composer composer-cli cockpit-composer bash-completion

Aktivieren Sie Image Builder, um nach jedem Neustart zu starten:

sudo systemctl enable --now lorax-composer.Steckdose

Aktivieren Sie es für den UI-Zugriff über das Cockpit:

sudo systemctl enable --now cockpit.socket sudo Firewall-cmd --add-service=cockpit && sudo Firewall-cmd --add-service=cockpit --permanent

Laden Sie das Shell-Konfigurationsskript so, dass die Autovervollständigung Die Funktion für den Befehl composer-cli beginnt sofort ohne Neustart zu arbeiten:

Quelle /etc/bash_completion.d/composer-cli

Schritt 2: Blueprint für Image Builder erstellen

Wir verwenden die Befehlszeilenschnittstelle für diese Operation. Dasselbe kann jedoch über die Cockpit-Webkonsole erfolgen. Um die Schnittstelle zu verwenden, führen Sie den Komponisten-Kli Befehl mit passenden Optionen und Argumenten.

Dies ist der Workflow Image Builder:

  1. Export (speichern) die Blueprint-Definition in eine reine Textdatei
  2. Bearbeiten Sie diese Datei in einem Texteditor
  3. Importieren (drücken) die Blueprint-Textdatei zurück in Image Builder
  4. Führen Sie ein Compose aus, um ein Bild aus der Blaupause zu erstellen
  5. Exportieren Sie die Bilddatei, um sie herunterzuladen

Füge deinen $USER zum . hinzu Schweißer Gruppe.

sudo usermod -aG weldr $USER newgrp weldr

Erstellen eines Image Builder-Blueprints:

$ vim rhel8-base.toml

Meins wurde so geändert, dass es wie folgt aussieht:

name = "rhel-8-base" description = "A RHEL 8 Base Image" version = "0.0.1" groups = [] [[modules]] name = "vim" version = "*" [[packages]] name = "openssh-server" version = "*" [[packages]] name = "rsync" version = "*" [[Pakete]] Name = "tmux" Version = "*" [[Pakete]] Name = "Git" Version = "*" [[Pakete]] Name = "Baum" Version = "*" [[ Pakete]] name = "bash-completion" version = "*" [[Pakete]] name = "lvm2" version = "*" [[Pakete]] name = "wget" version = "*" [[Pakete]] name = "firewalld" version = "*" [[packages]] name = "python3" version = "*" [[packages]] name = "python3-pip" version = "*" [[packages]] name = " telnet" version = "*" [Anpassungen.Kernel] append = "net.ifnames=0" [[Anpassungen.user]] name = "rheladmin" description = " RHEL Admin User" password = "hashed-user-password" key = "your-ssh-pub-key" home = "/home/rheladmin/" shell = "/usr/ bin/bash" groups = ["users", "wheel"]

Ersetzen Hash-Benutzer-Passwortpass mit dem eigentlichen Passwort-Hash. Verwenden Sie zum Generieren des Hashs einen Befehl wie diesen:

python3 -c 'Krypta importieren,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Bestätigen: ")) sonst exit())'

Überprüfen Sie die Dokumentationsseite für alle Einträge und Anpassungen.

Schieben Sie die Blaupause zurück in Image Builder:

$ Composer-Cli-Blaupausen pushen rhel8-base.toml

Verfügbare Image-Builder auflisten:

$ Composer-cli Blueprints List Beispiel-Atlas-Beispiel-Entwicklungs-Beispiel-http-Server Rhel-8-Base 

Schritt 3: Erstellen Sie ein System-Image mit Image Builder

Pass die Start Option zum Erstellen des Images für Ihren CentOS / RHEL-Computer.

$ Composer-cli Compose start BLUEPRINT-NAME IMAGE-TYPE

Um die verfügbaren Bildtypen anzuzeigen, führen Sie Folgendes aus:

$ Composer-cli Compose-Typen alibaba ami ext4-Dateisystem google live-iso openstack partitioned-disk qcow2 tar vhd vmdk 

Also starte ich jetzt ein Compose mit dem erstellten Blueprint und dem Ausgabetyp.

$ Composer-cli Compose start rhel-8-base ami Compose 036fb329-0443-48ad-9444-a1c70caa4b36 zur Warteschlange hinzugefügt

So überprüfen Sie den Status der Erstellung:

$ Composer-cli Compose Status 036fb329-0443-48ad-9444-a1c70caa4b36 LAUFEND Sa Apr 4 15:41:12 2020 rhel-8-base 0.0.1 ami $ Composer-cli Compose Status 036fb329-0443-48ad-9444-a1c70caa4b36 FINISHED Sa Apr 4 15:46:52 2020 rhel-8-base 0.0.1 ami 4668260352 

Sobald die Komposition abgeschlossen ist, laden Sie die resultierende Bilddatei herunter:

$ Composer-cli Compose Image UUID -- Beispiel --- $ Composer-cli Compose Image 036fb329-0443-48ad-9444-a1c70caa4b36 036fb329-0443-48ad-9444-a1c70caa4b36-disk.Freund: 4452.00 MB 

Schritt 4: AMI-Image in AWS hochladen

Installieren Sie Python 3 und das Pip-Tool:

sudo yum -y installiere python3 python3-pip

Installieren Sie die AWS-Befehlszeilentools mit pip:

sudo pip3 installiere awscli

Konfigurieren Sie den AWS-Befehlszeilenclient gemäß Ihren AWS-Zugriffsdetails:

$ aws configure AWS Access Key ID [Keine]: AWS Secret Access Key [Keine]: Standardregionsname [Keine]: Standardausgabeformat [Keine]:

Konfigurieren Sie den AWS-Befehlszeilenclient für die Verwendung Ihres Buckets:

$ BUCKET=ami-image-bucket $ aws s3 mb s3://$BUCKET

Bucket-Erstellung bestätigen:

$ aws s3 ls 2020-04-04 15:49:47 ami-image-bucket

Ein ... kreieren vmimport S3-Rolle in IAM und erteilen Sie ihr Berechtigungen für den Zugriff auf S3:

printf ' "Version": "2012-10-17", "Statement": [  "Effect": "Allow", "Principal":  "Service": "vmie.Amazonaws.com" , "Action": "sts:AssumeRole", "Condition":  "StringEquals": "sts:Externalid": "vmimport"    ] ' > Vertrauensrichtlinie.json printf ' "Version":"2012-10-17", "Statement":[  "Effect":"Allow", "Action":[ "s3:GetBucketLocation", "s3:GetObject", "s3: ListBucket" ], "Resource":[ "arn:aws:s3:::%s", "arn:aws:s3:::%s/*" ] ,  "Effect":"Allow", "Action ":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*" ], "Resource":"*"  ] ' $BUCKET $BUCKET > Rollenrichtlinie.json aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json

Hochladen eines AMI-Image in AWS:

$ BUCKET=ami-image-bucket $ AMI=036fb329-0443-48ad-9444-a1c70caa4b36-disk.ami $ aws s3 cp $AMI s3://$BUCKET hochladen: ./036fb329-0443-48ad-9444-a1c70caa4b36-disk.ami zu s3://ami-image-bucket/036fb329-0443-48ad-9444-a1c70caa4b36-disk.ami

Nachdem der Upload zu S3 beendet ist, importieren Sie das Image als Snapshot in EC2:

printf ' "Description": "my-image", "Format": "raw", "UserBucket":  "S3Bucket": "%s", "S3Key": "%s"  ' $BUCKET $AMI > Behälter.json aws ec2 import-snapshot --disk-container file://containers.json

Beispielausgabe:

 "ImportTaskId": "import-snap-0617ccf6944d82089", "SnapshotTaskDetail":  "DiskImageSize": 0.0, "Format": "RAW", "Progress": "3", "Status": "active", "StatusMessage": "pending", "UserBucket":  "S3Bucket": "ami-image-bucket" , "S3Key": "036fb329-0443-48ad-9444-a1c70caa4b36-disk.ami"    

Importvorgang bestätigen:

$ aws ec2 describe-import-snapshot-tasks --filters Name=task-state,Values=active  "ImportSnapshotTasks": [  "ImportTaskId": "import-snap-0617ccf6944d82089", "SnapshotTaskDetail":  "DiskImageSize": 4668260352.0, "Format": "RAW", "Progress": "94", "SnapshotId": "snap-0fd61ffa2f2cd4ad0", "Status": "active", "StatusMessage": "Snapshot vorbereiten", "UserBucket":  "S3Bucket": "ami-image-bucket", "S3Key": "036fb329-0443-48ad-9444-a1c70caa4b36-disk.ami"  , "Tags": []  ] 

Melden Sie sich bei AWS an und bestätigen Sie die Existenz von Snapshot.

Erstellen Sie ein Bild aus dem hochgeladenen Snapshot, klicken Sie mit der rechten Maustaste auf Snapshot auf EC2 und wählen Sie Bild erstellen:

Geben Sie dem Image einen Namen und legen Sie den Virtualisierungstyp, die Festplattengröße und die Beschreibung fest.t.c.

Nach der Erstellung wird das Image im AMI-Bereich verfügbar sein.

Von AWS empfohlene Kurse:AWS Certified Solutions Architect - Associate 2020AWS-zertifizierter Lösungsarchitekt - Associate 2020$12.06$156.75auf LagerJETZT KAUFENUdemy.comAWS-zertifizierter Entwickler - Associate 2020AWS-zertifizierter Entwickler - Associate 202015 $.68180 $.87auf LagerJETZT KAUFENUdemy.comUltimativer AWS-zertifizierter SysOps Administrator Associate 2020Ultimativer AWS Certified SysOps Administrator Associate 2020$12.06$156.75auf LagerJETZT KAUFENUdemy.com

Referenz:

Ähnliche Anleitungen:

Automatisieren Sie die RHEL- und CentOS-Installation auf KVM mit Kickstart

Erstellen Sie AWS EC2-Maschinen-Images (AMI) mit Packer und Ansible

Die besten Bücher zum Erlernen der Haskell-Programmierung im Jahr 2021
Funktionale Programmierung ist ein Programmierparadigma, das den Prozess der Erstellung von Software beinhaltet, indem reine Funktionen zusammengesetz...
Die besten Bücher zum Erlernen von Betriebssystemen im Jahr 2021
In unseren Artikeln der Buchreihe werden wir uns einige der Ressourcen ansehen, die Sie sich ansehen können, um ein gutes Verständnis dafür zu bekomme...
Top-Bücher zur Vorbereitung auf die CRISC-Zertifizierungsprüfung im Jahr 2021
EinführungCertified in Risk and Information Systems (CRISC) ist eine Zertifizierung, die von ISACA entwickelt wurde und aufrechterhalten wird. Ihr Hau...