Rancho
Puedes descargar este artículo en formato PDF para apoyarnos a través del siguiente enlace.
Descarga la guía en formato PDF
apagar
Rancho
El
El
En esta guía, analizaremos cómo utilizar Image Builder para crear una AMI RHEL 8/CentOS 8 personalizada para AWS. Para los recién llegados a Image Builder, es una herramienta para crear imágenes de sistema personalizadas de Red Hat Enterprise Linux, incluidas imágenes de sistema que están listas para implementarse en plataformas en la nube.
El generador de imágenes procesa automáticamente los detalles de configuración del servidor para cada salida de imagen, por lo que es más rápido que el método de creación manual de imágenes. herramienta de línea de comandocompositorDisponible, así como la interfaz gráfica de usuario en la consola web Cockpit.
Bloque generador de imágenes
- Plano? Defina una imagen de sistema personalizada enumerando los paquetes de software y las personalizaciones que se incluirán en el sistema. El plano se presenta al usuario en formato de texto sin formato (lenguaje mínimo de Tom (TOML)).
- escribir? La combinación es una compilación separada de una imagen del sistema basada en una versión específica de un plano específico.
- personalizado? Estas son especificaciones del sistema, no embalaje. Esto incluye usuarios, grupos y claves SSH.
Formato de salida del Generador de imágenes
El generador de imágenes le permite construir imágenes en múltiples formatos de salida. Vea la tabla a continuación.
Imagen QEMU QCOW2 | qcow2 |
.qcow2 |
Imagen del sistema de archivos ext4 | ext4-filesystem |
.img |
Imagen de disco de partición sin formato | partitioned-disk |
.img |
Iniciar ISO en tiempo real | live-iso |
.iso |
archivo TAR | tar |
.tar |
Disco de imagen de máquina de Amazon | ami |
.ami |
Imagen de disco de Azure | vhd |
.vhd |
Disco de máquina virtual VMware | vmdk |
.vmdk |
Pila abierta | openstack |
.qcow2 |
Paso 1: instale el paquete de software Image Builder
Antes de utilizar Image Builder, debe instalar los siguientes paquetes de software.
sudo yum -y install vim lorax-composer composer-cli cockpit-composer bash-completion
Habilite Image Builder para que se inicie después de cada reinicio:
sudo systemctl enable --now lorax-composer.socket
Para acceder a la interfaz de usuario a través de Cockpit, habilítela:
sudo systemctl enable --now cockpit.socket
sudo firewall-cmd --add-service=cockpit && sudo firewall-cmd --add-service=cockpit --permanent
Cargue el script de configuración del shell para que la función de autocompletar del comando compositor-cli pueda comenzar a funcionar inmediatamente sin reiniciar:
source /etc/bash_completion.d/composer-cli
Paso 2: cree un plano para Image Builder
Usaremos la interfaz de línea de comando para hacer esto. Sin embargo, se puede realizar la misma operación desde la consola web de Cockpit. Para utilizar esta interfaz, ejecutecompositorComandos con opciones y parámetros apropiados.
Este es el generador de imágenes de flujo de trabajo:
- Exportar (guardar) definiciones de planos a archivos de texto sin formato
- Edite este archivo en un editor de texto
- Importe (envíe) el archivo de texto del plano a Image Builder
- Ejecute redactar para crear la imagen según el plano.
- Exportar archivos de imagen para descargar
Agregue su $ USUARIO al grupo de soldador.
sudo usermod -aG weldr $USER
newgrp weldr
Crear plano de Image Builder:
$ vim rhel8-base.toml
El mío ha sido modificado de la siguiente manera:
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 = "*"
[[packages]]
name = "tmux"
version = "*"
[[packages]]
name = "git"
version = "*"
[[packages]]
name = "tree"
version = "*"
[[packages]]
name = "bash-completion"
version = "*"
[[packages]]
name = "lvm2"
version = "*"
[[packages]]
name = "wget"
version = "*"
[[packages]]
name = "firewalld"
version = "*"
[[packages]]
name = "python3"
version = "*"
[[packages]]
name = "python3-pip"
version = "*"
[[packages]]
name = "telnet"
version = "*"
[customizations.kernel]
append = "net.ifnames=0"
[[customizations.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"]
Reemplazarcontraseña de usuario hashHash con la contraseña real. Para generar un hash, use el siguiente comando:
python3 -c 'import crypt,getpass;pw=getpass.getpass();print(crypt.crypt(pw) if (pw==getpass.getpass("Confirm: ")) else exit())'
ControlardocumentoTodas las entradas y páginas personalizadas.
Vuelva a colocar el plano en Image Builder:
$ composer-cli blueprints push rhel8-base.toml
Enumere los generadores de imágenes disponibles:
$ composer-cli blueprints list
example-atlas
example-development
example-http-server
rhel-8-base
Paso 3: use Image Builder para crear una imagen del sistema
A través deStart Opción para crear una imagen para su máquina CentOS/RHEL.
$ composer-cli compose start BLUEPRINT-NAME IMAGE-TYPE
Para ver los tipos de imágenes disponibles, ejecute:
$ composer-cli compose types
alibaba
ami
ext4-filesystem
google
live-iso
openstack
partitioned-disk
qcow2
tar
vhd
vmdk
Ahora comenzaré a escribir con el plano y el tipo de salida creados.
$ composer-cli compose start rhel-8-base ami
Compose 036fb329-0443-48ad-9444-a1c70caa4b36 added to the queue
Para comprobar el estado de la escritura:
$ composer-cli compose status
036fb329-0443-48ad-9444-a1c70caa4b36 RUNNING Sat Apr 4 15:41:12 2020 rhel-8-base 0.0.1 ami
$ composer-cli compose status
036fb329-0443-48ad-9444-a1c70caa4b36 FINISHED Sat Apr 4 15:46:52 2020 rhel-8-base 0.0.1 ami 4668260352
Después de escribir, descargue el archivo de imagen generado:
$ composer-cli compose image UUID
-- Example ---
$ composer-cli compose image 036fb329-0443-48ad-9444-a1c70caa4b36
036fb329-0443-48ad-9444-a1c70caa4b36-disk.ami: 4452.00 MB
Paso 4: cargue la imagen AMI en AWS
Instale Python 3 y las herramientas pip:
sudo yum -y install python3 python3-pip
Utilice pip para instalar la herramienta de línea de comandos de AWS:
sudo pip3 install awscli
Configure el cliente de línea de comandos de AWS según sus detalles de acceso a AWS:
$ aws configure
AWS Access Key ID [None]:
AWS Secret Access Key [None]:
Default region name [None]:
Default output format [None]:
Configure el cliente de línea de comandos de AWS para usar su depósito:
$ BUCKET=ami-image-bucket
$ aws s3 mb s3://$BUCKET
Confirme la creación del depósito:
$ aws s3 ls
2020-04-04 15:49:47 ami-image-bucket
Cree la función vmimport S3 en IAM y concédale acceso a S3:
printf '{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals":{ "sts:Externalid": "vmimport" } } } ] }' > trust-policy.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 > role-policy.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
Cargue la imagen AMI en AWS:
$ BUCKET=ami-image-bucket
$ AMI=036fb329-0443-48ad-9444-a1c70caa4b36-disk.ami
$ aws s3 cp $AMI s3://$BUCKET
upload: ./036fb329-0443-48ad-9444-a1c70caa4b36-disk.ami to s3://ami-image-bucket/036fb329-0443-48ad-9444-a1c70caa4b36-disk.ami
Una vez completada la carga a S3, importe la imagen como una instantánea a EC2:
printf '{ "Description": "my-image", "Format": "raw", "UserBucket": { "S3Bucket": "%s", "S3Key": "%s" } }' $BUCKET $AMI > containers.json
aws ec2 import-snapshot --disk-container file://containers.json
Salida de muestra:
{
"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"
}
}
}
Confirmar el proceso de importación:
$ 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": "Preparing snapshot",
"UserBucket": {
"S3Bucket": "ami-image-bucket",
"S3Key": "036fb329-0443-48ad-9444-a1c70caa4b36-disk.ami"
}
},
"Tags": []
}
]
}
Inicie sesión en AWS y confirme la existencia de la instantánea.
Haga clic en "Instantánea" en EC2 y seleccionecrear una imagen:
Asigne un nombre a la imagen y establezca el tipo de virtualización, el tamaño y la descripción del disco, etc.
Una vez creada, la imagen estará disponible en la sección “AMI”.
referencia:
- Página de escritura de CentOS
- soldadordocumento
Directrices similares:
Utilice Kickstart para automatizar la instalación de RHEL y CentOS en KVM
Uso de Packer y Ansible para crear una imagen de máquina (AMI) de AWS EC2
Rancho
Puedes descargar este artículo en formato PDF para apoyarnos a través del siguiente enlace.
Descarga la guía en formato PDF
apagar
Rancho
El
El