Kupanga chithunzi chanu ndi CentOS 8.1 yoyera mumtambo wa Amazon

Bukuli ndi "foloko" la dzina lomwelo zolemba za CentOS 5.9, ndipo imaganizira mawonekedwe a OS yatsopano. Pakadali pano palibe chithunzi chovomerezeka cha Centos8 chochokera ku centos.org mumsika wa AWS.

Monga mukudziwira, mumtambo wa Amazon zochitika zenizeni zimayambitsidwa kutengera zithunzi (zotchedwa AMI). Amazon imapereka ambiri aiwo; mutha kugwiritsanso ntchito zithunzi zapagulu zokonzedwa ndi anthu ena, zomwe wopereka mtambo, ndithudi, alibe udindo uliwonse. Koma nthawi zina mumafunika chithunzi choyera chadongosolo ndi magawo ofunikira, omwe sali pamndandanda wazithunzi.

Ndiye njira yokhayo yotulukira ndikupanga AMI yanu.

Zolemba zovomerezeka zimalongosola njira kupanga "AMI yothandizidwa ndi sitolo".

Choyipa cha njirayi ndikuti chithunzi chomalizidwa chidzafunikanso kusinthidwa kukhala "EBS-backed AMI". Chofunikanso kudziwa ndi Cockpit Image Builder. Ikuthandizani kuti mupange zithunzi zokhazikika, mu CLI kapena WEB GUI mode, koma mukakhala kale ndi Centos 8.

Momwe mungapangire EBS-backed AMI yanu mumtambo wa Amazon popanda masitepe apakatikati tikambirana m'nkhaniyi.

Dongosolo lochita

  • Konzani chilengedwe
  • Ikani dongosolo loyera ndikupanga zoikamo zofunika
  • Pezani chithunzi cha disk
  • Lembani AMI

Kukonzekera Chilengedwe

Kwa zolinga zathu, iliyonse chitsanzo cha Centos 7 mawonekedwe aliwonse, ngakhale t2.micro. Mutha kuyendetsa kudzera pa 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}

Lamulo lidzakweza chitsanzo mu VPC yomwe subnet-id yotchulidwayo ndi yake. Subnet ikuyenera kukhala yapagulu, ndipo SG 'default' imalola chilichonse.

Tsopano tiyeni tilowe mu chitsanzo kudzera ssh, sinthani dongosolo, khazikitsani dnf ndi kuyambitsanso:

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

Ntchito zina zonse zidzachitika kuyambira root.

Kuyika zoyera za Centos 8.1

Mapangidwe a fayilo ndi kuyika magawo

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

Kupanga chikwatu mtengo

Dongosolo la RPM limakupatsani mwayi wokonzekera mwachangu komanso mwachangu chikwatu cha OS yamtsogolo:

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 

Ndikuwona kuti ndibwino kuti mupereke lamulo lomaliza motere, pakuyika maphukusi enieni, ndipo onetsetsani kuti mwanyalanyaza phukusi lovomerezeka.

Ngati mukufuna, mutha kugwiritsa ntchito izi:

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

Π’ yum palibe --excludepkgs, ndipo ndisanayambe kukhazikitsa magulu ndikuchotsa phukusi.

Mndandanda wamaphukusi ndi magulu odalira akhoza kuwonedwa ndi lamulo dnf group info core kwa gulu core.

Kusintha mafayilo a OS

Tiyeni tipange makonzedwe a netiweki, fstab, grub2 ndikugwiritsa ntchito ma adilesi a AWS amkati 169.254 a DNS ndi 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

Ndili pano, mu GRUB_CMDLINE_LINUX, kuti ndikupangira kufotokoza selinux=0, kwa iwo omwe akuopabe SELinux.

Kumanganso initramfs mu chroot

Pambuyo pokonza mafayilo a grub ndi fstab, muyenera kumanganso.
Timakonza zowonjezera:

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

apa update-crypto-policies - kusankha, kwa paranoid :)

Pa "kugulitsa", mutha kuchita izi:

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

Pambuyo kutsegula OS, lamulo update-crypto-policies --show idzatulutsa FIPS.

Autostart ndi Kuyeretsa Zinyalala

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 - yofunikira kukhazikitsa mafayilo amtundu wa SELinux pa boot yoyamba.

Tsopano tiyeni tichotse disk:

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

Kulembetsa kwa AMI

Kuti mupeze ami kuchokera ku ebs disk, choyamba muyenera kujambula chithunzithunzi cha 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'

Muyenera kudikirira kwakanthawi. Tiyeni tiwone momwe zilili pogwiritsa ntchito SnapshotId yomwe idalandilidwa:

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

Tikachipeza "State": "completed", mutha kulembetsa AMI ndikuyiwonetsa poyera:

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}]'

Ndizomwezo. Tsopano mutha kuyambitsa zochitika.

Mwanjira iyi, mutha kupanga chithunzi, mwina, ndi kugawa kulikonse kwa Linux. Osachepera Debian (kugwiritsa ntchito debootstrap kukhazikitsa dongosolo loyera) ndi banja la RHEL.

PEZANI Zochokera zopempha owerenga. Izi zitha kukhala zokha Chonyamula, Zosintha zokha. apa Chitsanzo cha template chikuperekedwa.

Source: www.habr.com

Kuwonjezera ndemanga