Menyediakan Fedora CoreOS di Amazon Web Services
Panduan ini menunjukkan cara menyediakan instance Fedora CoreOS (FCOS) baru di platform cloud Amazon Web Services (AWS).
Persyaratan
Fedora CoreOS supports configuring access via SSH keys using Afterburn on this platform. Once you have configured your SSH Key in the platform configuration, you can provision and access Fedora CoreOS instances with the default user core, without using an Ignition config.
We recommend using an Ignition config once you are more familiar with Fedora CoreOS and want to automate the deployment of systems.
You need to have access to an AWS account. The examples below use the aws command-line tool, which must be separately installed and configured beforehand.
Menjalankan instance VM
Contoh Minimal
Instance AWS baru dapat langsung dibuat dari citra publik FCOS. Anda dapat menemukan AMI terbaru untuk setiap wilayah di halaman unduhan.
Jika Anda hanya tertarik untuk menjelajahi FCOS tanpa melakukan kustomisasi lebih lanjut, Anda dapat menggunakan pasangan kunci SSH yang terdaftar untuk pengguna default core.
Untuk mencoba FCOS dengan cara ini, Anda perlu menjalankan perintah aws ec2 run-instances dan memberikan beberapa informasi agar instance dapat berjalan. Berikut ini contoh perintah yang dapat digunakan:
NAME='instance1'
SSHKEY='my-key' # nama kunci SSH Anda: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx' # ID AMI yang ditemukan di halaman unduhan
DISK='20' # ukuran hard disk
REGION='us-east-1' # wilayah target
TYPE='m5.large' # tipe instance
SUBNET='subnet-xxx' # subnet: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xx' # grup keamanan: `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}}"
Anda dapat mengetahui alamat IP yang diberikan untuk instance dengan menjalankan perintah aws ec2 describe-instances.
|
Sekarang Anda seharusnya dapat melakukan SSH ke dalam instance menggunakan alamat IP yang terkait.
ssh core@<ip address>
Contoh yang Disesuaikan
Untuk menjalankan instance FCOS yang disesuaikan, konfigurasi Ignition yang valid harus diberikan sebagai data pengguna pada saat pembuatan. Anda dapat menggunakan perintah yang sama dari [_minimal_example], tetapi tambahkan argumen --user-data file://path/to/config.ign:
Kunci SSH untuk pengguna core juga disediakan melalui Afterburn dalam contoh ini.
|
NAME='instance1'
SSHKEY='my-key' # nama kunci SSH Anda: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx' # ID AMI yang ditemukan di halaman unduhan
DISK='20' # ukuran hard disk
REGION='us-east-1' # wilayah target
TYPE='m5.large' # tipe instance
SUBNET='subnet-xxx' # subnet: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xx' # grup keamanan `aws ec2 describe-security-groups`
USERDATA='/path/to/config.ign' # jalur ke konfigurasi Ignition Anda
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}}"
| Secara desain, konfigurasi cloud-init dan skrip startup tidak didukung di FCOS. Sebagai gantinya, disarankan untuk menyandikan logika startup apa pun sebagai unit layanan systemd dalam konfigurasi Ignition. |
Anda dapat mengetahui alamat IP yang diberikan untuk instance dengan menjalankan perintah aws ec2 describe-instances.
|
Sekarang Anda seharusnya dapat melakukan SSH ke dalam instance menggunakan alamat IP yang terkait.
ssh core@<ip address>
Konfigurasi Ignition Jarak Jauh
Karena data pengguna dibatasi hingga 16 KB, Anda mungkin perlu menggunakan sumber eksternal untuk konfigurasi Ignition Anda. Solusi umum adalah mengunggah konfigurasi tersebut ke bucket S3, seperti yang ditunjukkan pada langkah-langkah berikut:
NAME='instance1'
aws s3 mb s3://$NAME-infra
NAME='instance1'
CONFIG='/path/to/config.ign' # jalur ke konfigurasi Ignition Anda
aws s3 cp $CONFIG s3://$NAME-infra/bootstrap.ign
You can verify the file has been correctly uploaded:
NAME='instance1'
aws s3 ls s3://$NAME-infra/
Kemudian buat konfigurasi Ignition minimal seperti berikut:
variant: fcos
version: 1.7.0
ignition:
config:
replace:
source: s3://instance1-infra/bootstrap.ign
butane -p config.bu -o config.ign
Anda perlu membuat peran (role) yang mencakup izin s3:GetObject, dan melampirkannya ke profil instance. Lihat dokumen pembuatan peran untuk informasi lebih lanjut.
cat <<EOF >trustpolicyforec2.json
{
"Version": "2012-10-17",
"Statement": {
"Effect": "Allow",
"Principal": {"Service": "ec2.amazonaws.com"},
"Action": "sts:AssumeRole"
}
}
EOF
# Buat role dan lampirkan kebijakan kepercayaan yang memungkinkan EC2 untuk mengambil peran tersebut.
ROLE_NAME="my-role"
aws iam create-role --role-name ${ROLE_NAME} --assume-role-policy-document file://trustpolicyforec2.json
# Lampirkan kebijakan terkelola AWS bernama AmazonS3ReadOnlyAccess ke role
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess --role-name ${ROLE_NAME}
# Buat profil instance yang diperlukan oleh EC2 untuk menyertakan role
PROFILE="my-instance-profile"
aws iam create-instance-profile --instance-profile-name ${PROFILE}
# Terakhir, tambahkan role ke profil instance
aws iam add-role-to-instance-profile --instance-profile-name ${PROFILE} --role-name ${ROLE_NAME}
Untuk menjalankan instance, perlu melampirkan profil yang telah dibuat. Dari baris perintah, gunakan --iam-instance-profile.
NAME='instance1'
SSHKEY='my-key' # nama kunci SSH Anda: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx' # ID AMI yang ditemukan di halaman unduhan
DISK='20' # ukuran hard disk
REGION='us-east-1' # wilayah target
TYPE='m5.large' # tipe instance
SUBNET='subnet-xxx' # subnet: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xxx' # grup keamanan `aws ec2 describe-security-groups`
USERDATA='/path/to/config.ign' # jalur ke konfigurasi Ignition Anda
PROFILE='xxx-profile' # nama profil instance IAM `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}}"
Setelah boot pertama selesai, pastikan untuk menghapus konfigurasi karena mungkin berisi data sensitif. Lihat [_configuration_cleanup].
Pembersihan konfigurasi
Jika Anda perlu menyimpan rahasia dalam konfigurasi Ignition, Anda sebaiknya menyimpannya di bucket S3 dan memiliki konfigurasi minimal di data pengguna. Setelah instance menyelesaikan boot pertama, hapus isi bucket S3 tersebut karena proses atau kontainer apa pun yang berjalan di instance dapat mengaksesnya. Lihat dokumentasi Ignition untuk saran lebih lanjut tentang pengelolaan rahasia.
NAME='instance1'
aws s3 rm s3://$NAME-infra/bootstrap.ign
Optionally, you can delete the whole bucket:
NAME='instance1'
aws s3 rb s3://$NAME-infra
| Data pengguna pada instance tidak dapat dimodifikasi tanpa menghentikan instance terlebih dahulu. |
Want to help? Learn how to contribute to Fedora Docs ›