Phau ntawv qhia no yog "khob ntoo" ntawm tib lub npe lus txog CentOS 5.9, thiab coj mus rau hauv tus account cov yam ntxwv ntawm OS tshiab. Tam sim no tsis muaj cov duab Centos8 los ntawm centos.org hauv AWS Marketplace.
Raws li koj paub, hauv Amazon huab virtual piv txwv tau pib ua raws li cov duab (lub npe hu ua AMI). Amazon muab ntau tus ntawm lawv; koj tuaj yeem siv pej xeem cov duab npaj los ntawm peb tog, uas cov neeg muab kev pabcuam huab, tau kawg, tsis muaj lub luag haujlwm. Tab sis qee zaum koj xav tau ib daim duab huv si nrog rau qhov tsim nyog tsis, uas tsis nyob hauv daim ntawv teev cov duab.
Tom qab ntawd tib txoj kev tawm yog ua kom koj tus kheej AMI.
Cov ntaub ntawv raug piav qhia txoj kev tsim ib qho "piv txwv li khw-rov qab AMI".
Qhov tsis zoo ntawm txoj hauv kev no yog tias cov duab tiav yuav tsum tau hloov mus rau hauv "EBS-backed AMI". Kuj tsim nyog sau cia yog Cockpit Image Builder. Nws yuav tso cai rau koj los tsim cov duab kev cai, hauv CLI los yog WEB GUI hom, tab sis thaum koj twb muaj Centos 8.
Yuav ua li cas los tsim koj tus kheej EBS-rov qab AMI hauv Amazon huab yam tsis muaj cov kauj ruam nruab nrab yuav tau tham hauv tsab xov xwm no.
Kev npaj ua
- Npaj ib puag ncig
- Nruab ib lub kaw lus huv thiab ua qhov tsim nyog
- Siv ib daim duab ntawm lub disk
- Sau npe AMI
Npaj ib puag ncig
Rau peb lub hom phiaj, txhua yam official Centos 7 piv txwv tej duab, txawm t2.micro. Koj tuaj yeem khiav nws ntawm 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}
Cov lus txib yuav tsa ib qho piv txwv hauv VPC uas tau teev tseg subnet-id yog. Lub subnet yuav tsum yog pej xeem, thiab SG 'default' tso cai rau txhua yam.
Tam sim no cia peb nkag mus rau qhov piv txwv ntawm ssh, hloov kho qhov system, nruab dnf
thiab reboot:
sudo yum update -y && sudo yum install -y dnf && sudo reboot
Tag nrho cov hauj lwm ntxiv yuav ua los ntawm root
.
Txhim kho huv Centos 8.1
Cov ntaub ntawv system layout thiab muab faib mounting
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
Tsim ib tsob ntoo directory
Lub RPM system tso cai rau koj kom yooj yim thiab sai sai npaj ib tsob ntoo npe rau yav tom ntej 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
Kuv xav tias nws yog qhov zoo tshaj plaws los ua cov lus txib kawg li no, los ntawm kev txhim kho cov pob tshwj xeeb, thiab nco ntsoov tsis quav ntsej cov pob khoom pom zoo.
Yog tias koj xav tau, koj tuaj yeem siv qee yam zoo li no:
dnf --installroot=$ROOTFS groupinstall base core
--excludepkgs "NetworkManager*"
-e "i*-firmware"
Π yum
tsis muaj --excludepkgs
, thiab ua ntej kuv yuav tsum tau nruab pab pawg thiab ces tshem tawm pob.
Daim ntawv teev cov pob khoom thiab cov pab pawg nyob nrog tuaj yeem saib nrog cov lus txib dnf group info core
rau ib pab pawg core
.
OS file customization
Wb tsim configs rau lub network, fstab, grub2 thiab siv AWS sab hauv 169.254 chaw nyob rau DNS thiab NTP.
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
Nws nyob ntawm no, hauv GRUB_CMDLINE_LINUX, uas kuv xav kom qhia meej selinux = 0, rau cov neeg uas tseem ntshai SELinux.
Rebuilding initramfs hauv chroot
Tom qab kho cov ntaub ntawv grub thiab fstab, koj yuav tsum rov tsim dua.
Peb ua qhov hloov tshiab:
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
no update-crypto-policies
- yeem, rau qhov paranoid :)
Rau "muag", koj tuaj yeem ua qhov no:
chroot $ROOTFS fips-mode-setup --enable
chroot $ROOTFS grub2-mkconfig -o /boot/grub2/grub.cfg
chroot $ROOTFS grub2-install $DEVICE
Tom qab thauj khoom OS, cov lus txib update-crypto-policies --show
yuav muab FIPS.
Autostart thiab khib nyiab tu
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
- xav tau los nruab SELinux cov ntsiab lus cov ntaub ntawv ntawm thawj khau raj.
Tam sim no cia peb unmount lub disk:
sync
umount $ROOTFS/{proc,sys,dev,run}
umount $ROOTFS
AMI sau npe
Yuav kom tau txais ami los ntawm ebs disk, koj thawj zaug yuav tsum tau thaij duab ntawm lub 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'
Koj yuav tau tos qee lub sijhawm. Cia peb txheeb xyuas cov xwm txheej uas tau txais SnapshotId:
aws ec2 describe-snapshots --region us-east-1 --snapshot-ids snap-0b665542fc59e58ed
Thaum peb tau txais nws "State": "completed"
, koj tuaj yeem sau npe AMI thiab ua rau pej xeem:
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}]'
Yog tag nrho. Tam sim no koj tuaj yeem tso cov piv txwv.
Ua li no, koj tuaj yeem tsim cov duab, feem ntau yuav, nrog rau Linux faib. Yam tsawg kawg nkaus Debian (siv debootstrap los nruab ib lub kaw lus huv) thiab RHEL tsev neeg.
Hloov tshiab Raws li kev thov los ntawm cov neeg nyeem. Cov txheej txheem no tuaj yeem ua tiav Pob Ntawv, Automate nkaus xwb. no Ib qho piv txwv yog nthuav tawm.
Tau qhov twg los: www.hab.com