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).
Requisitos previos
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 debería poder acceder mediante SSH a la instancia usando la dirección IP asociada.
ssh core@<ip address>
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 debería poder acceder mediante SSH a la instancia usando la dirección IP asociada.
ssh core@<ip address>
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='instance1'
CONFIG='/path/to/config.ign' # path to your Ignition config
aws s3 cp $CONFIG s3://$NAME-infra/bootstrap.ign
Usted puede verificar que el archivo ha sido cargado correctamente:
NAME='instance1'
aws s3 ls s3://$NAME-infra/
Después cree la configuración Ignition mínima como sigue:
variant: fcos
version: 1.5.0
ignition:
config:
replace:
source: s3://instance1-infra/bootstrap.ign
butane -p config.bu -o config.ign
You need to create a role that includes s3:GetObject
permission, and attach it to the instance profile. See role creation document for more information.
cat <<EOF >trustpolicyforec2.json
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {"Service": "ec2.amazonaws.com"},
"Action": "sts:AssumeRole"
}
}
EOF
# Create the role and attach the trust policy that allows EC2 to assume this role.
ROLE_NAME="my-role"
aws iam create-role --role-name ${ROLE_NAME} --assume-role-policy-document file://trustpolicyforec2.json
# Attach the AWS managed policy named AmazonS3ReadOnlyAccess to the role
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess --role-name ${ROLE_NAME}
# Create the instance profile required by EC2 to contain the role
PROFILE="my-instance-profile"
aws iam create-instance-profile --instance-profile-name ${PROFILE}
# Finally, add the role to the instance profile
aws iam add-role-to-instance-profile --instance-profile-name ${PROFILE} --role-name ${ROLE_NAME}
To launch the instance, need to attach the created profile. From the command-line, use --iam-instance-profile
.
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-xxx' # the security group `aws ec2 describe-security-groups`
USERDATA='/path/to/config.ign' # path to your Ignition config
PROFILE='xxx-profile' # the name of an IAM instance profile `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}" \
--iam-instance-profile Name=${PROFILE} \
--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 puesto que puede contener datos sensibles. Vea Limpieza de la configuración.
Limpieza de la 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='instance1'
aws s3 rm s3://$NAME-infra/bootstrap.ign
Opcionalmente, usted puede eliminar 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 ›