Aprovisionando Fedora CoreOS en Servicios Amazon Web
Esta guía le muestra como aprovisionar nuevas instancias Fedora CoreOS (FCOS) sobre la plataforma en la nube Servicios Amazon Web (AWS).
Pre-requisitos
Antes de aprovisionar una máquina FCOS, usted debe tener un archivo de configuración Ignition que contenga sus personalizaciones. Si no tiene uno vea Produciendo un Archivo Ignition.
Fedora CoreOS tiene un usuario core predeterminado que puede ser usado para explorar el SO. Si usted desea utilizarlo finalice su configuración proporcionando una clave SSH.
|
Si no desea usar Ignition para empezar, puede usar Soporte Afterburn.
También necesita tener acceso a una cuenta AWS. Los ejemplos de abajo usan las herramienta de línea de comandos aws, que debe instalarse y configurarse separadamente de antemano.
Lanzar una instancia de Máquina Virtual
Ejemplo Mínimo
New AWS instances can be directly created from the public FCOS images. You can find the latest AMI for each region from the download page.
If you are only interested in exploring FCOS without further customization, you can use a registered SSH key-pair for the default core
user.
To test out FCOS this way you’ll need to run the aws ec2 run-instances
command and provide some information to get the instance up and running. The following is an example command you can use:
NAME='instance1'
SSHKEY='my-key' # the name of your SSH key: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx' # the AMI ID found on the download page
DISK='20' # the size of the hard disk
REGION='us-east-1' # the target region
TYPE='m5.large' # the instance type
SUBNET='subnet-xxx' # the subnet: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xx' # the security group `aws ec2 describe-security-groups`
aws ec2 run-instances \
--region $REGION \
--image-id $IMAGE \
--instance-type $TYPE \
--key-name $SSHKEY \
--subnet-id $SUBNET \
--security-group-ids $SECURITY_GROUPS \
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=${NAME}}]" \
--block-device-mappings "VirtualName=/dev/xvda,DeviceName=/dev/xvda,Ebs={VolumeSize=${DISK}}"
Usted puede encontrar la IP asignada de la instancia ejecutando`aws ec2 describe-instances` |
Ahora sería capaz de acceder por SSH a la instancia usando la dirección IP asociada.
ssh core@<ip dirección>
Ejemplo Personalizado
Con el objetivo de lanzar una instancia FCOS personalizada, se debe pasar una configuración Ignition válida como sus datos de usuario en el momento de la creación. Usted puede utilizar el mismo comando del ejemplo mínimo pero añadiendo el argumento --user-data file://path/to/config.ign
:
La clave SSH para el usuario core también se proporciona a través de Afterburn en este ejemplo.
|
NAME='instance1'
SSHKEY='my-key' # the name of your SSH key: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx' # the AMI ID found on the download page
DISK='20' # the size of the hard disk
REGION='us-east-1' # the target region
TYPE='m5.large' # the instance type
SUBNET='subnet-xxx' # the subnet: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xx' # the security group `aws ec2 describe-security-groups`
USERDATA='/path/to/config.ign' # path to your Ignition config
aws ec2 run-instances \
--region $REGION \
--image-id $IMAGE \
--instance-type $TYPE \
--key-name $SSHKEY \
--subnet-id $SUBNET \
--security-group-ids $SECURITY_GROUPS \
--user-data "file://${USERDATA}" \
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=${NAME}}]" \
--block-device-mappings "VirtualName=/dev/xvda,DeviceName=/dev/xvda,Ebs={VolumeSize=${DISK}}"
Por diseño, la configuración cloud-init y los scripts de arranque no se admiten en FCOS. En su lugar, se recomienda codificar cualquier lógica de inicio como unidades de servicio systemd en la configuración Ignition. |
Usted puede encontrar la IP asignada de la instancia ejecutando`aws ec2 describe-instances` |
Ahora sería capaz de acceder por SSH a la instancia usando la dirección IP asociada.
ssh core@<ip dirección>
Configuración Ignition remota
Como los datos de usuario están limitados a 16 KB, usted puede necesitar una fuente externa para su configuración Ignition. Una solución común es cargar la configuración en un depósito S3, como muestran los siguientes pasos:
NAME='instance1'
aws s3 mb s3://$NAME-infra
NAME='instancia1'
CONFIG='/ruta/a/config.ign' # ruta para su to config de Ignition
aws s3 cp CONFIG s3://$NAME-infra/bootstrap.ign
Usted puede verificar que el archivo ha sido cargado correctamente:
NAME='instancia1'
aws s3 ls s3://$NAME-infra/
Después cree la configuración Ignition mínima como sigue:
variant: fcos
version: 1.6.0
ignition:
config:
replace:
source: s3://instance1-infra/bootstrap.ign
butane -p config.bu -o config.ign
Necesita crear un rol que incluya permisos s3:GetObject
, y inclúyalo al perfil de instancia. Consulte creación de documento de rol para más información.
cat <<EOF >trustpolicyforec2.json
{
"Versión": "2012-10-17",
"Enunciado": {
"Efectoecto": "Allow",
"Principal": {"Service": "ec2.amazonaws.com"},
"Acción": "sts:AssumeRole"
}
}
EOF
# Crea el rol y adjunta la normativa de confianza que permtie a RC2 asumir este rol.
ROLE_NAME="mi-role"
aws iam create-role --role-name ${ROLE_NAME} --assume-role-policy-document file://trustpolicyforec2.json
# Adjunta la normativa gestionada del AWS nombrado en AmazonS3ReadOnly para el rol
aws iam adjunta-rol-normativ--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess --role-name ${ROLE_NAME}a
# Crea el perfil de instancia requerida por EC2 para contener el rol
PROFILE="mi-instancia-prefil"
aws iam create-instance-profile --instance-profile-name ${PROFILE}
# Finalmente, añade el rol para el perfil de instancia
aws iam add-role-to-instance-profile --instance-profile-name ${PROFILE} --role-name ${ROLE_NAME}
Para lanzar la instancia, necesita adjuntar el perfil creado. Desde la línea de instrucción, utilice --iam-instance-profile
.
NAME='instance1'
SSHKEY='mi-clave' # el nombre de su llave SSH: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx' # el ID AMI encontrado en la página de descarga
DISK='20' # el tamaño del disco duro
REGION='us-east-1' # la región destino
TYPE='m5.large' # el tipo de instancia
SUBNET='subnet-xxx' # la subred: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xx' # el grupo de seguridad `aws ec2 describe-security-groups`
USERDATA='/ruta/a/config.ign' # ruta a su confitura a su config Ignition
PROFILE='xxx-profile' # el nombre de una instancia IAM perfil `aws iam list-instance-profiles`
aws ec2 run-instances \
--region $REGION \
--image-id $IMAGE \
--instance-type $TYPE \
--key-name $SSHKEY \
--subnet-id $SUBNET \
--security-group-ids $SECURITY_GROUPS \
--user-data "file://${USERDATA}" \
--tag-specifications "ResourceType=instance,Tags=[{Key=Name,Value=${NAME}}]" \
--block-device-mappings "VirtualName=/dev/xvda,DeviceName=/dev/xvda,Ebs={VolumeSize=${DISK}}"
Una vez que se ha completado el primer arranque, asegúrese de borrar la configuración como puede contener datos sensibles. Consulte [_configuration_cleanup].
Vaciado de configuración
Si necesita tener secretos en su configuración Ignition debería almacenarla en un depósito S3 y tener una configuración mínima en datos de usuario. Una vez que la instancia ha completado el primer arranque, borre el depósito S3 puesto que cualquier proceso o contenedor que se ejecute en la instancia puede acceder a él. Vea en la documentación Ignition más advertencias sobre la administración de secretos.
NAME='instancia1'
aws s3 rm s3://$NAME-infra/bootstrap.ign
Opcionalmente, usted puede borrar todo el depósito:
NAME='instance1'
aws s3 rb s3://$NAME-infra
Los datos de usuario de la instancia no pueden ser modificados sin parar la instancia. |
Want to help? Learn how to contribute to Fedora Docs ›