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
Sebelum menyediakan mesin FCOS, Anda harus memiliki file konfigurasi Ignition yang berisi kustomisasi Anda. Jika belum memilikinya, lihat [Producing an Ignition File](xref:producing-ign.adoc).
Fedora CoreOS memiliki pengguna bawaan bernama core yang dapat digunakan untuk menjelajahi sistem operasi. Jika Anda ingin menggunakannya, selesaikan [konfigurasinya](xref:authentication.adoc) dengan menambahkan, misalnya, kunci SSH.
|
Jika Anda tidak ingin menggunakan Ignition untuk memulai, Anda dapat memanfaatkan dukungan Afterburn.
Anda juga perlu memiliki akses ke akun AWS. Contoh di bawah ini menggunakan alat baris perintah aws, yang harus diinstal dan dikonfigurasi terlebih dahulu secara terpisah.
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.6.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 ›