Šis vadovas yra to paties pavadinimo „šakutė“. Straipsnis apie CentOS 5.9, ir atsižvelgiama į naujosios OS ypatybes. Šiuo metu AWS prekyvietėje nėra oficialaus Centos8 vaizdo iš centos.org.
Kaip žinote, „Amazon“ debesyje virtualūs egzemplioriai paleidžiami remiantis vaizdais (vadinamieji AMI). „Amazon“ pateikia daugybę jų, taip pat galite naudoti trečiųjų šalių parengtus viešus vaizdus, už kuriuos debesų tiekėjas, žinoma, neprisiima jokios atsakomybės. Tačiau kartais reikia švaraus sistemos vaizdo su reikiamais parametrais, kurių vaizdų sąraše nėra.
Tada vienintelė išeitis yra sukurti savo AMI.
Oficialioje dokumentacijoje aprašoma procesas sukurti „pavyzdžių parduotuvės palaikomą AMI“.
Šio metodo trūkumas yra tas, kad baigtą vaizdą taip pat reikės konvertuoti į „EBS palaikomą AMI“. Taip pat verta paminėti Cockpit Image Builder. Tai leis jums sukurti pasirinktinius vaizdus CLI arba WEB GUI režimu, bet kai jau turite Centos 8.
Šiame straipsnyje bus aptarta, kaip sukurti savo EBS palaikomą AMI „Amazon“ debesyje be tarpinių veiksmų.
Veiksmų planas
- Paruoškite aplinką
- Įdiekite švarią sistemą ir atlikite reikiamus nustatymus
- Padarykite disko momentinę nuotrauką
- Registruokis AMI
Aplinkos paruošimas
Mūsų tikslams bet koks oficialus Centos 7 pavyzdys bet kokios formos, net t2.micro. Jį galite paleisti per 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}Komanda iškels egzempliorių VPC, kuriam priklauso nurodytas potinklio ID. Manoma, kad potinklis yra viešas, o SG „numatytasis“ leidžia viską.
Dabar prisijunkite prie egzemplioriaus per ssh, atnaujinkite sistemą, įdiekite dnf ir paleisti iš naujo:
sudo yum update -y && sudo yum install -y dnf && sudo rebootVisos tolimesnės operacijos bus atliekamos nuo root.
Įdiekite švarų Centos 8.1
Failų sistemos išdėstymas ir skaidinių montavimas
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/runKatalogų medžio kūrimas
RPM sistema leidžia lengvai ir greitai paruošti katalogų medį būsimai 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 Manau, kad optimaliausia paskutinę komandą vykdyti tokiu būdu, įdiegiant konkrečius paketus, o rekomenduojamus paketus būtinai nepaisyti.
Jei norite, galite naudoti kažką panašaus:
dnf --installroot=$ROOTFS groupinstall base core
--excludepkgs "NetworkManager*"
-e "i*-firmware"В yum ne --excludepkgs, o prieš tai turėjau įdiegti grupes ir tada pašalinti paketus.
Paketų ir priklausomų grupių sąrašą galima peržiūrėti su komanda dnf group info core grupei core.
OS failo pritaikymas
Sukurkime tinklo konfigūracijas, fstab, grub2 ir naudokime AWS vidinius 169.254 adresus DNS ir 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
HABRBūtent čia, GRUB_CMDLINE_LINUX, rekomenduoju nurodyti selinux=0 tiems, kurie vis dar bijo SELinux.
Initramfs atkūrimas chroot
Redagavus grub ir fstab failus, reikia atkurti.
Atnaujiname:
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Čia update-crypto-policies - neprivaloma, paranoikams :)
Jei norite parduoti, galite tai padaryti:
chroot $ROOTFS fips-mode-setup --enable
chroot $ROOTFS grub2-mkconfig -o /boot/grub2/grub.cfg
chroot $ROOTFS grub2-install $DEVICEĮkėlus OS komandą update-crypto-policies --show išleis FIPS.
Automatinis paleidimas ir šiukšlių valymas
chroot $ROOTFS systemctl enable network.service
chroot $ROOTFS systemctl enable sshd.service
chroot $ROOTFS systemctl enable cloud-init.service
chroot $ROOTFS systemctl mask tmp.mountdnf --installroot=$ROOTFS clean all
truncate -c -s 0 $ROOTFS/var/log/*.log
rm -rf var/lib/dnf/*
touch $ROOTFS/.autorelabelautorelabel - reikalingas norint automatiškai įdiegti SELinux kontekstinius failus per pirmą paleidimą.
Dabar atjunkite diską:
sync
umount $ROOTFS/{proc,sys,dev,run}
umount $ROOTFSAMI registracija
Norėdami gauti ami iš ebs disko, pirmiausia turite padaryti disko momentinę nuotrauką:
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'Teks šiek tiek palaukti. Patikrinkime būseną naudodami gautą SnapshotId:
aws ec2 describe-snapshots --region us-east-1 --snapshot-ids snap-0b665542fc59e58edKai gausime "State": "completed", galite užregistruoti AMI ir paskelbti jį viešai:
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}]'
Tai viskas. Dabar galite paleisti egzempliorius.
Tokiu būdu galite sukurti vaizdą, greičiausiai, naudodami bet kurį „Linux“ platinimą. Bent jau tiksliai Debian (naudojant debootstrap švariai sistemai įdiegti) ir RHEL šeima.
ATNAUJINIMAS Pagal skaitytojų pageidavimus. Šis procesas gali būti automatizuotas Pakuotojas, Tik automatizuoti. Čia Pateikiamas šablono pavyzdys.
Šaltinis: www.habr.com
