ການຕິດຕັ້ງ Fedora CoreOS ເທິງ Amazon Web Services

ຄູ່ມືນີ້ຈະສະແດງວິທີການຕິດຕັ້ງອິນສະແຕນຊ໌ Fedora CoreOS (FCOS) ໃໝ່ ເທິງແພລັດຟອມຄລາວ Amazon Web Services (AWS).

ສິ່ງທີ່ຕ້ອງມີມາກ່ອນ

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.

ການເປີດໃຊ້ງານອິນສະແຕນຊ໌ VM

ຕົວຢ່າງແບບພື້ນຖານ

ອິນສະແຕນຊ໌ AWS ໃໝ່ສາມາດຖືກສ້າງຂຶ້ນໂດຍກົງຈາກຮູບພາບ FCOS ສາທາລະນະ. ທ່ານສາມາດຄົ້ນຫາ AMI ຫຼ້າສຸດສຳລັບແຕ່ລະພາກພື້ນໄດ້ຈາກ ໜ້າດາວໂຫລດ.

ຖ້າທ່ານພຽງແຕ່ສົນໃຈໃນການສຳຫຼວດ FCOS ໂດຍບໍ່ມີການປັບແຕ່ງເພີ່ມເຕີມ, ທ່ານສາມາດໃຊ້ ຄູ່ກະແຈ SSH ທີ່ລົງທະບຽນແລ້ວ ສຳລັບຜູ້ໃຊ້ core ເລີ່ມຕົ້ນ.

ເພື່ອທົດລອງ FCOS ດ້ວຍວິທີນີ້ ທ່ານຈຳເປັນຕ້ອງລັນຄຳສັ່ງ aws ec2 run-instances ແລະ ສະໜອງຂໍ້ມູນບາງຢ່າງເພື່ອໃຫ້ອິນສະແຕນຊ໌ເລີ່ມເຮັດວຽກ. ຕໍ່ໄປນີ້ແມ່ນຕົວຢ່າງຄຳສັ່ງທີ່ທ່ານສາມາດນຳໃຊ້ໄດ້:

ການເປີດຕົວອິນສະແຕນຊ໌ໃໝ່
NAME='instance1'
SSHKEY='my-key'     # ຊື່ຂອງກະແຈ SSH ຂອງທ່ານ: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx'     # ID ຂອງ AMI ທີ່ພົບໃນໜ້າດາວໂຫລດ
DISK='20'           # ຂະໜາດຂອງຮາດດິດ
REGION='us-east-1'  # ພາກພື້ນເປົ້າໝາຍ
TYPE='m5.large'     # ປະເພດຂອງອິນສະແຕນຊ໌
SUBNET='subnet-xxx' # ຊັບເນັດ: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xx' # ກຸ່ມຄວາມປອດໄພ `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}}"
ທ່ານສາມາດກວດສອບ IP ທີ່ຖືກກຳນົດໃຫ້ອິນສະແຕນຊ໌ໄດ້ໂດຍການລັນຄຳສັ່ງ aws ec2 describe-instances

ດຽວນີ້ທ່ານຄວນຈະສາມາດ SSH ເຂົ້າໄປຍັງອິນສະແຕນຊ໌ໂດຍໃຊ້ທີ່ຢູ່ IP ທີ່ກ່ຽວຂ້ອງໄດ້ແລ້ວ.

ຕົວຢ່າງການເຊື່ອມຕໍ່
ssh core@<ip address>

ຕົວຢ່າງແບບປັບແຕ່ງ

ໃນການເປີດໃຊ້ງານອິນສະແຕນຊ໌ FCOS ແບບປັບແຕ່ງ, ຕ້ອງມີການສົ່ງໄຟລ໌ການກຳນົດຄ່າ Ignition ທີ່ຖືກຕ້ອງເປັນ ຂໍ້ມູນຜູ້ໃຊ້ (user data) ໃນເວລາສ້າງ. ທ່ານສາມາດໃຊ້ຄຳສັ່ງດຽວກັນຈາກ [_minimal_example] ແຕ່ເພີ່ມອາກິວເມນ --user-data file://path/to/config.ign ເຂົ້າໄປ:

SSH key ສຳລັບຜູ້ໃຊ້ core ແມ່ນຖືກສະໜອງໃຫ້ຜ່ານ Afterburn ໃນຕົວຢ່າງນີ້ຄືກັນ.
ການເປີດໃຊ້ງານ ແລະ ປັບແຕ່ງອິນສະແຕນຊ໌ໃໝ່
NAME='instance1'
SSHKEY='my-key'     # ຊື່ຂອງ SSH key ຂອງທ່ານ: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx'     # AMI ID ທີ່ພົບໃນໜ້າດາວໂຫຼດ
DISK='20'           # ຂະໜາດຂອງຮາດດິດ
REGION='us-east-1'  # ພາກພື້ນເປົ້າໝາຍ
TYPE='m5.large'     # ປະເພດຂອງອິນສະແຕນຊ໌
SUBNET='subnet-xxx' # ຊັບເນັດ: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xx' # ກຸ່ມຄວາມປອດໄພ `aws ec2 describe-security-groups`
USERDATA='/path/to/config.ign' # ເສັ້ນທາງໄປຫາໄຟລ໌ Ignition ຂອງທ່ານ
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}}"
ໂດຍການອອກແບບແລ້ວ, ການກຳນົດຄ່າ cloud-init ແລະ ສະຄຣິບເລີ່ມຕົ້ນລະບົບແມ່ນບໍ່ຮອງຮັບໃນ FCOS. ແທນທີ່ຈະເປັນແນວນັ້ນ, ແນະນຳໃຫ້ຂຽນເຫດຜົນການເລີ່ມຕົ້ນລະບົບໃດໜຶ່ງເປັນ systemd service units ໃນການກຳນົດຄ່າ Ignition.
ທ່ານສາມາດກວດສອບ IP ທີ່ຖືກກຳນົດໃຫ້ອິນສະແຕນຊ໌ໄດ້ໂດຍການລັນຄຳສັ່ງ aws ec2 describe-instances

ດຽວນີ້ທ່ານຄວນຈະສາມາດ SSH ເຂົ້າໄປຍັງອິນສະແຕນຊ໌ໂດຍໃຊ້ທີ່ຢູ່ IP ທີ່ກ່ຽວຂ້ອງໄດ້ແລ້ວ.

ຕົວຢ່າງການເຊື່ອມຕໍ່
ssh core@<ip address>

ການກຳນົດຄ່າ Ignition ຈາກໄລຍະໄກ

ເນື່ອງຈາກຂໍ້ມູນຜູ້ໃຊ້ (user-data) ຖືກຈຳກັດໄວ້ທີ່ 16 KB, ທ່ານອາດຈະຕ້ອງໃຊ້ແຫຼ່ງຂໍ້ມູນພາຍນອກສຳລັບໄຟລ໌ການກຳນົດຄ່າ Ignition ຂອງທ່ານ. ວິທີການທົ່ວໄປແມ່ນການອັບໂຫຼດການກຳນົດຄ່າໄປຍັງ S3 bucket, ຕາມຂັ້ນຕອນດັ່ງຕໍ່ໄປນີ້:

ສ້າງ s3 bucket ໃໝ່
NAME='instance1'
aws s3 mb s3://$NAME-infra
ອັບໂຫຼດໄຟລ໌ Ignition
NAME='instance1'
CONFIG='/path/to/config.ign' # ເສັ້ນທາງໄປຫາໄຟລ໌ Ignition ຂອງທ່ານ
aws s3 cp $CONFIG s3://$NAME-infra/bootstrap.ign

ທ່ານສາມາດກວດສອບໄດ້ວ່າໄຟລ໌ຖືກອັບໂຫຼດຢ່າງຖືກຕ້ອງແລ້ວ:

ສະແດງລາຍຊື່ໄຟລ໌ໃນ bucket
NAME='instance1'
aws s3 ls s3://$NAME-infra/

ຈາກນັ້ນໃຫ້ສ້າງໄຟລ໌ Ignition ແບບພື້ນຖານດັ່ງນີ້:

ການດຶງຂໍ້ມູນໄຟລ໌ Ignition ຈາກໄລຍະໄກຈາກ s3 bucket
variant: fcos
version: 1.7.0
ignition:
  config:
    replace:
      source: s3://instance1-infra/bootstrap.ign
ແປງຮູບແບບໄຟລ໌ Ignition ຈາກໄລຍະໄກໃຫ້ເປັນຮູບແບບ json
butane -p config.bu -o config.ign

ທ່ານຈຳເປັນຕ້ອງສ້າງບົດບາດ (role) ທີ່ລວມເອົາສິດ s3:GetObject ແລະ ແນບມັນເຂົ້າກັບ instance profile. ເບິ່ງ ເອກະສານການສ້າງບົດບາດ ສຳລັບຂໍ້ມູນເພີ່ມເຕີມ.

ສ້າງ instance profile
cat <<EOF >trustpolicyforec2.json
{
  "Version": "2012-10-17",
  "Statement": {
    "Effect": "Allow",
    "Principal": {"Service": "ec2.amazonaws.com"},
    "Action": "sts:AssumeRole"
  }
}
EOF

# ສ້າງບົດບາດ ແລະ ແນບນະໂຍບາຍຄວາມເຊື່ອຖືທີ່ອະນຸຍາດໃຫ້ EC2 ໃຊ້ບົດບາດນີ້.
ROLE_NAME="my-role"
aws iam create-role --role-name ${ROLE_NAME} --assume-role-policy-document file://trustpolicyforec2.json

# ແນບນະໂຍບາຍທີ່ຈັດການໂດຍ AWS ທີ່ຊື່ວ່າ AmazonS3ReadOnlyAccess ເຂົ້າກັບບົດບາດ
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess --role-name ${ROLE_NAME}

# ສ້າງ instance profile ທີ່ EC2 ຕ້ອງການເພື່ອບັນຈຸບົດບາດ
PROFILE="my-instance-profile"
aws iam create-instance-profile --instance-profile-name ${PROFILE}

# ສຸດທ້າຍ, ເພີ່ມບົດບາດເຂົ້າໃນ instance profile
aws iam add-role-to-instance-profile --instance-profile-name ${PROFILE} --role-name ${ROLE_NAME}

ໃນການເປີດໃຊ້ງານອິນສະແຕນຊ໌, ຈຳເປັນຕ້ອງໄດ້ແນບ profile ທີ່ສ້າງຂຶ້ນ. ຈາກຄຳສັ່ງ, ໃຫ້ໃຊ້ --iam-instance-profile.

ການເປີດໃຊ້ງານ ແລະ ປັບແຕ່ງອິນສະແຕນຊ໌ໃໝ່ດ້ວຍໄຟລ໌ Ignition ຈາກໄລຍະໄກຈາກ S3 bucket
NAME='instance1'
SSHKEY='my-key'          # ຊື່ຂອງ SSH key ຂອງທ່ານ: `aws ec2 describe-key-pairs`
IMAGE='ami-xxx'          # AMI ID ທີ່ພົບໃນໜ້າດາວໂຫຼດ
DISK='20'                # ຂະໜາດຂອງຮາດດິດ
REGION='us-east-1'       # ພາກພື້ນເປົ້າໝາຍ
TYPE='m5.large'          # ປະເພດຂອງອິນສະແຕນຊ໌
SUBNET='subnet-xxx'      # ຊັບເນັດ: `aws ec2 describe-subnets`
SECURITY_GROUPS='sg-xxx' # ກຸ່ມຄວາມປອດໄພ `aws ec2 describe-security-groups`
USERDATA='/path/to/config.ign' # ເສັ້ນທາງໄປຫາໄຟລ໌ Ignition ຂອງທ່ານ
PROFILE='xxx-profile'    # ຊື່ຂອງ 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}}"

ເມື່ອການບູດເຄື່ອງຄັ້ງທຳອິດສຳເລັດແລ້ວ, ໃຫ້ແນ່ໃຈວ່າໄດ້ລຶບການກຳນົດຄ່າອອກ ເພາະມັນອາດຈະມີຂໍ້ມູນທີ່ສຳຄັນ. ເບິ່ງ [_configuration_cleanup].

ການລຶບລ້າງການກຳນົດຄ່າ

ຖ້າທ່ານຈຳເປັນຕ້ອງມີຂໍ້ມູນລັບໃນການກຳນົດຄ່າ Ignition, ທ່ານຄວນເກັບມັນໄວ້ໃນ S3 bucket ແລະ ມີການກຳນົດຄ່າແບບພື້ນຖານໃນ user-data. ເມື່ອອິນສະແຕນຊ໌ສຳເລັດການບູດຄັ້ງທຳອິດແລ້ວ, ໃຫ້ລຶບຂໍ້ມູນໃນ S3 bucket ເພາະວ່າຂະບວນການ ຫຼື ຄອນເທນເນີໃດໆທີ່ເຮັດວຽກຢູ່ໃນອິນສະແຕນຊ໌ອາດຈະເຂົ້າເຖິງມັນໄດ້. ເບິ່ງ ເອກະສານ Ignition ສຳລັບຄຳແນະນຳເພີ່ມເຕີມກ່ຽວກັບການຈັດການຂໍ້ມູນລັບ.

ການລຶບການກຳນົດຄ່າ Ignition ອອກຈາກ s3 bucket
NAME='instance1'
aws s3 rm s3://$NAME-infra/bootstrap.ign

ທາງເລືອກເພີ່ມເຕີມ, ທ່ານສາມາດລຶບທັງ bucket ໄດ້:

ການລຶບ s3 bucket
NAME='instance1'
aws s3 rb s3://$NAME-infra
ຂໍ້ມູນຜູ້ໃຊ້ (user data) ຂອງອິນສະແຕນຊ໌ບໍ່ສາມາດແກ້ໄຂໄດ້ໂດຍບໍ່ມີການຢຸດອິນສະແຕນຊ໌.