Amazon cloud တွင် သန့်စင်သော CentOS 8.1 ဖြင့် သင့်ကိုယ်ပိုင်ပုံကို ဖန်တီးပါ။

ဤလမ်းညွှန်ချက်သည် အမည်တူ "ခက်ရင်း" ဖြစ်သည်။ ဆောင်းပါးများ CentOS 5.9 အကြောင်းနှင့် OS အသစ်၏ အင်္ဂါရပ်များကို ထည့်သွင်းစဉ်းစားပါ။ AWS Marketplace တွင် centos.org မှ တရားဝင် Centos8 ပုံ မရှိပါ။

သင်သိသည့်အတိုင်း Amazon cloud တွင် ရုပ်ပုံများကိုအခြေခံ၍ virtual instances များ (ဟုခေါ်သည်။ AMI) Amazon သည် ၎င်းတို့ထဲမှ အများအပြားကို ပံ့ပိုးပေးသည်၊ cloud ပံ့ပိုးပေးသူသည် မည်သည့်တာဝန်မှ မယူဘဲ တတိယအဖွဲ့အစည်းမှ ပြင်ဆင်ထားသော အများသူငှာပုံများကို သင်လည်း အသုံးပြုနိုင်သည်။ သို့သော် တစ်ခါတစ်ရံတွင် ရုပ်ပုံများစာရင်းတွင်မပါရှိသော လိုအပ်သောဘောင်များပါသော သန့်ရှင်းသောစနစ်ပုံတစ်ပုံကို လိုအပ်သည်။

ထို့နောက်ထွက်ပေါက်တစ်ခုတည်းသောနည်းလမ်းမှာသင်၏ကိုယ်ပိုင် AMI ဖန်တီးရန်ဖြစ်သည်။

တရားဝင်စာတမ်းမှာ ဖော်ပြထားတယ်။ လမ်း “instance store-backed AMI” ကို ဖန်တီးခြင်း။

ဤချဉ်းကပ်မှု၏အားနည်းချက်မှာ ပြီးသွားသောပုံကို "EBS-ကျောထောက်နောက်ခံပြု AMI" အဖြစ်သို့ ပြောင်းလဲရန် လိုအပ်ပါသည်။ ဒါ့အပြင် Cockpit Image Builder လည်းမှတ်သားထိုက်ပါတယ်။ ၎င်းသည် စိတ်ကြိုက်ပုံများကို ဖန်တီးနိုင်စေမည်ဖြစ်သည်။ CLI သို့မဟုတ် ဝဘ် GUI ကို မုဒ်က Centos 8 ရှိပြီးသားပါ။

အလယ်အလတ်အဆင့်များမပါဘဲ Amazon cloud တွင် သင်၏ကိုယ်ပိုင် EBS-ကျောထောက်နောက်ခံပြု AMI ဖန်တီးနည်းကို ဤဆောင်းပါးတွင် ဆွေးနွေးပါမည်။

အရေးယူဆောင်ရွက်မှုအစီအစဉ်

  • ပတ်ဝန်းကျင်ကို ပြင်ဆင်ပါ။
  • သန့်ရှင်းသောစနစ်ကို ထည့်သွင်းပြီး လိုအပ်သော ဆက်တင်များကို ပြုလုပ်ပါ။
  • ဒစ်ခ်ကို လျှပ်တစ်ပြက်ရိုက်ပါ။
  • AMI မှတ်ပုံတင်ပါ။

ပတ်ဝန်းကျင်ပြင်ဆင်ခြင်း။

ကျွန်ုပ်တို့၏ရည်ရွယ်ချက်များအတွက်, တစ်ခုခု တရားဝင် Centos 7 ဥပမာ ပုံသဏ္ဍာန်တစ်ခုခု၊ t2.micro ပင်။ ၎င်းကို CLI မှတစ်ဆင့် သင်လုပ်ဆောင်နိုင်သည်-

aws ec2 run-instances 
  --image-id ami-4bf3d731 
  --region us-east-1 
  --key-name alpha 
  --instance-type t2.micro 
  --subnet-id subnet-240a8618 
  --associate-public-ip-address 
  --block-device-mappings DeviceName=/dev/sda1,Ebs={VolumeSize=8} 
  --block-device-mappings DeviceName=/dev/sdb,Ebs={VolumeSize=4}

command သည် သတ်မှတ်ထားသော subnet-id ပိုင်ဆိုင်သည့် VPC တွင် instance တစ်ခုကို မြှင့်တင်ပေးလိမ့်မည်။ subnet သည် အများသူငှာဖြစ်သင့်ပြီး SG 'မူလ' သည် အရာအားလုံးကို ခွင့်ပြုသည်။

ယခု ssh မှတဆင့် instance သို့ဝင်ရောက်ပါ၊ စနစ်ကိုမွမ်းမံပါ၊ ထည့်သွင်းကြပါစို့ dnf နှင့် reboot:

sudo yum update -y && sudo yum install -y dnf && sudo reboot

နောက်ထပ် စစ်ဆင်ရေးတွေအားလုံးကို လုပ်ဆောင်သွားမှာ ဖြစ်ပါတယ်။ root.

သန့်ရှင်းသော Centos 8.1 ကို ထည့်သွင်းခြင်း။

ဖိုင်စနစ်အပြင်အဆင်နှင့် အခန်းကန့်တပ်ဆင်ခြင်း။

DEVICE=/dev/xvdb
ROOTFS=/rootfs
parted -s ${DEVICE} mktable gpt
parted -s ${DEVICE} mkpart primary ext2 1 2
parted -s ${DEVICE} set 1 bios_grub on
parted -s ${DEVICE} mkpart primary xfs 2 100%

mkfs.xfs -L root ${DEVICE}2
mkdir -p $ROOTFS
mount ${DEVICE}2 $ROOTFS

mkdir $ROOTFS/{proc,sys,dev,run}
mount --bind /proc $ROOTFS/proc
mount --bind /sys $ROOTFS/sys
mount --bind /dev $ROOTFS/dev
mount --bind /run $ROOTFS/run

လမ်းညွှန်သစ်ပင်ဖန်တီးခြင်း။

RPM စနစ်သည် အနာဂတ် OS အတွက် လမ်းညွှန်သစ်ပင်ကို လွယ်ကူလျင်မြန်စွာ ပြင်ဆင်နိုင်စေပါသည်။

PKGSURL=http://mirror.centos.org/centos/8/BaseOS/x86_64/os/Packages
rpm --root=$ROOTFS --initdb
rpm --root=$ROOTFS -ivh 
  $PKGSURL/centos-release-8.1-1.1911.0.8.el8.x86_64.rpm 
  $PKGSURL/centos-gpg-keys-8.1-1.1911.0.8.el8.noarch.rpm 
  $PKGSURL/centos-repos-8.1-1.1911.0.8.el8.x86_64.rpm

dnf --installroot=$ROOTFS --nogpgcheck --setopt=install_weak_deps=False 
   -y install audit authselect basesystem bash biosdevname coreutils 
   cronie curl dnf dnf-plugins-core dnf-plugin-spacewalk dracut-config-generic 
   dracut-config-rescue e2fsprogs filesystem firewalld glibc grub2 grubby hostname 
   initscripts iproute iprutils iputils irqbalance kbd kernel kernel-tools 
   kexec-tools less linux-firmware lshw lsscsi ncurses network-scripts 
   openssh-clients openssh-server passwd plymouth policycoreutils prefixdevname 
   procps-ng  rng-tools rootfiles rpm rsyslog selinux-policy-targeted setup 
   shadow-utils sssd-kcm sudo systemd util-linux vim-minimal xfsprogs 
   chrony cloud-init 

သတ်မှတ်ထားသော ပက်ကေ့ဂျ်များကို ထည့်သွင်းခြင်းဖြင့် ဤနည်းဖြင့် နောက်ဆုံးအမိန့်ကို လုပ်ဆောင်ရန် အကောင်းဆုံးဟု ကျွန်ုပ်ယူဆပြီး အကြံပြုထားသော ပက်ကေ့ခ်ျများကို လျစ်လျူရှုရန် သေချာပါစေ။

ဆန္ဒရှိပါက ဤကဲ့သို့သော အရာများကို အသုံးပြုနိုင်ပါသည်။

dnf --installroot=$ROOTFS groupinstall base core 
    --excludepkgs "NetworkManager*" 
     -e "i*-firmware"

В yum အဘယ်သူမျှမ --excludepkgsအရင်က အုပ်စုတွေကို တပ်ဆင်ပြီး ပက်ကေ့ဂျ်တွေကို ဖယ်ရှားခဲ့ရပါတယ်။

ပက်ကေ့ဂျ်များစာရင်းနှင့် မှီခိုသည့်အုပ်စုများစာရင်းကို အမိန့်ဖြင့် ကြည့်ရှုနိုင်သည်။ dnf group info core အဖွဲ့တစ်ခုအတွက် core.

OS ဖိုင်ကို စိတ်ကြိုက်ပြင်ဆင်ခြင်း။

ကွန်ရက်အတွက်၊ fstab၊ grub2 နှင့် DNS နှင့် NTP အတွက် AWS အတွင်းပိုင်း 169.254 လိပ်စာများကို အသုံးပြုကြပါစို့။

cat > $ROOTFS/etc/resolv.conf << HABR
nameserver 169.254.169.253
HABR

cat > $ROOTFS/etc/sysconfig/network << HABR
NETWORKING=yes
NOZEROCONF=yes
HABR

cat > $ROOTFS/etc/sysconfig/network-scripts/ifcfg-eth0  << HABR
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
HABR

cat > $ROOTFS/etc/fstab << HABR
LABEL=root / xfs defaults,relatime 1 1
HABR

sed -i  "s/cloud-user/centos/" $ROOTFS/etc/cloud/cloud.cfg
echo "server 169.254.169.123 prefer iburst minpoll 4 maxpoll 4" >> $ROOTFS/etc/chrony.conf
sed -i "/^pool /d" $ROOTFS/etc/chrony.conf
sed -i "s/^AcceptEnv/# /" $ROOTFS/etc/ssh/sshd_config

cat > $ROOTFS/etc/default/grub << HABR
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto console=ttyS0,115200n8 console=tty0 net.ifnames=0 biosdevname=0"
GRUB_DISABLE_RECOVERY="true"
GRUB_ENABLE_BLSCFG=true
HABR

GRUB_CMDLINE_LINUX တွင် ဤနေရာတွင် SELinux ကိုကြောက်နေသေးသူများအတွက် selinux=0 ကို သတ်မှတ်ရန် အကြံပြုအပ်ပါသည်။

chroot တွင် initramfs ပြန်လည်တည်ဆောက်ခြင်း။

grub နှင့် fstab ဖိုင်များကို တည်းဖြတ်ပြီးနောက်၊ သင်သည် ပြန်လည်တည်ဆောက်ရန် လိုအပ်သည်။
ကျွန်ုပ်တို့သည် အပ်ဒိတ်ကို လုပ်ဆောင်သည်-

KERNEL=$(ls $ROOTFS/lib/modules/) 
chroot $ROOTFS dracut -f -v /boot/initramfs-$KERNEL.img $KERNEL
chroot $ROOTFS grub2-mkconfig -o /boot/grub2/grub.cfg
chroot $ROOTFS grub2-install $DEVICE
chroot $ROOTFS update-crypto-policies --set FUTURE

ဒီမှာ update-crypto-policies - အကြောက်လွန်သူများအတွက် ရွေးချယ်နိုင်သည် :)

"ရောင်းရန်" အတွက်၊ သင်သည်ဤအရာကိုလုပ်ဆောင်နိုင်သည်-

chroot $ROOTFS fips-mode-setup --enable
chroot $ROOTFS grub2-mkconfig -o /boot/grub2/grub.cfg
chroot $ROOTFS grub2-install $DEVICE

OS ကို loading ပြီးနောက်, command ကို update-crypto-policies --show FIPS ထုတ်ပေးပါမည်။

အလိုအလျောက်စတင်ခြင်းနှင့် အမှိုက်သန့်ရှင်းရေး

chroot $ROOTFS systemctl enable network.service
chroot $ROOTFS systemctl enable sshd.service
chroot $ROOTFS systemctl enable cloud-init.service
chroot $ROOTFS systemctl mask tmp.mount
dnf --installroot=$ROOTFS clean all
truncate -c -s 0 $ROOTFS/var/log/*.log
rm -rf var/lib/dnf/*
touch $ROOTFS/.autorelabel

autorelabel - ပထမစွတ်တင်တွင် SELinux ဆက်စပ်ဖိုင်များကို အလိုအလျောက်ထည့်သွင်းရန် လိုအပ်သည်။

အခု disk ကိုဖြုတ်လိုက်ရအောင်။

sync
umount $ROOTFS/{proc,sys,dev,run}
umount $ROOTFS

AMI မှတ်ပုံတင်ခြင်း။

ebs disk တစ်ခုမှ ami ကိုရယူရန်၊ သင်သည် ဦးစွာ disk ၏လျှပ်တစ်ပြက်ရိုက်ယူရန် လိုအပ်သည်-

aws ec2 create-snapshot 
    --volume-id vol-09f26eba4c50da110  --region us-east-1 
    --description 'centos-release-8.1-1.1911.0.8 4.18.0-147.5.1 01'

အချိန်တစ်ခုစောင့်ရပါလိမ့်မယ်။ ရရှိလာသော SnapshotId ကို အသုံးပြု၍ အခြေအနေကို စစ်ဆေးကြည့်ကြပါစို့။

aws ec2   describe-snapshots  --region us-east-1 --snapshot-ids snap-0b665542fc59e58ed

ဘယ်အချိန်ရလဲ။ "State": "completed"သင်သည် AMI ကို စာရင်းသွင်းပြီး အများသိအောင် ပြုလုပ်နိုင်သည်-

aws ec2 register-image 
    --region us-east-1 
    --name 'CentOS-8.1-1.1911.0.8-minimal' 
    --description 'centos-release-8.1-1.1911.0.8 4.18.0-147.5.1 01' 
    --virtualization-type hvm --root-device-name /dev/sda1 
    --block-device-mappings '[{"DeviceName":"/dev/sda1","Ebs": { "SnapshotId": "snap-0b665542fc59e58ed", "VolumeSize":4,  "DeleteOnTermination": true, "VolumeType": "gp2"}}]' 
    --architecture x86_64 --sriov-net-support simple --ena-support

aws ec2 modify-image-attribute 
    --region us-east-1 
    --image-id ami-011ed2a37dc89e206 
    --launch-permission 'Add=[{Group=all}]'

ဒါပါပဲ။ ယခု သင်သည် သာဓကများကို စတင်နိုင်ပါပြီ။

ဤနည်းအားဖြင့် သင်သည် မည်သည့် Linux ဖြန့်ဖြူးမှုဖြင့်မဆို ပုံတစ်ပုံကို ဖန်တီးနိုင်သည်။ အနည်းဆုံး Debian (သန့်ရှင်းသောစနစ်ထည့်သွင်းရန် debootstrap ကိုအသုံးပြုသည်) နှင့် RHEL မိသားစု။

UPDATE စာဖတ်သူများ၏ တောင်းဆိုမှုအပေါ် အခြေခံသည်။ ဤလုပ်ငန်းစဉ်သည် အလိုအလျောက်လုပ်ဆောင်နိုင်သည်။ Packer ပါအလိုအလျောက်လုပ်ရန်သာ။ ဒီမှာ နမူနာပုံစံတစ်ခုကို တင်ပြထားပါတယ်။

source: www.habr.com

မှတ်ချက် Add