Luo oma kuva puhtaalla CentOS 8.1:llä Amazon-pilvessä

Tämä opas on samanniminen "haarukka". Artikkeli Tietoja CentOS 5.9:stä ja ottaa huomioon uuden käyttöjärjestelmän ominaisuudet. Tällä hetkellä AWS-markkinapaikalla ei ole virallista Centos8-kuvaa centos.org-sivustolta.

Kuten tiedät, Amazon-pilvessä käynnistetään kuviin perustuvia virtuaalisia instansseja (ns AMI). Amazon tarjoaa niitä suuren määrän, voit käyttää myös kolmansien osapuolien valmistamia julkisia kuvia, joista pilvipalveluntarjoaja ei tietenkään ota vastuuta. Mutta joskus tarvitset puhtaan järjestelmäkuvan tarvittavilla parametreilla, joita ei ole kuvaluettelossa.

Sitten ainoa tie ulos on tehdä oma AMI.

Virallinen dokumentaatio kuvaa tapa luomalla "instanssikaupan tukeman AMI:n".

Tämän lähestymistavan haittana on, että valmis kuva on myös muutettava "EBS-tuetuksi AMI:ksi". Huomionarvoinen on myös Cockpit Image Builder. Sen avulla voit luoda mukautettuja kuvia CLI tai WEB GUI -tilassa, mutta kun sinulla on jo Centos 8.

Tässä artikkelissa käsitellään oman EBS:n tukeman AMI:n luomista Amazon-pilveen ilman välivaiheita.

Toimintasuunnitelma

  • Valmistele ympäristö
  • Asenna puhdas järjestelmä ja tee tarvittavat asetukset
  • Ota tilannekuva levystä
  • Rekisteröidy AMI

Ympäristön valmistelu

Meidän tarkoituksiamme varten mikä tahansa virallinen Centos 7 -esiintymä mikä tahansa muoto, jopa t2.micro. Voit suorittaa sen CLI:n kautta:

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}

Komento herättää VPC:ssä esiintymän, johon määritetty aliverkon tunnus kuuluu. Aliverkon oletetaan olevan julkinen, ja SG "oletus" sallii kaiken.

Nyt kirjaudutaan sisään ilmentymään ssh:n kautta, päivitetään järjestelmä, asennetaan dnf ja käynnistä uudelleen:

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

Kaikki muut toimenpiteet suoritetaan alkaen root.

Puhtaan Centos 8.1:n asentaminen

Tiedostojärjestelmän asettelu ja osion asennus

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

Hakemistopuun luominen

RPM-järjestelmän avulla voit helposti ja nopeasti valmistella hakemistopuun tulevaa käyttöjärjestelmää varten:

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 

Mielestäni on optimaalista suorittaa viimeinen komento tällä tavalla, asentamalla tiettyjä paketteja, ja muista jättää huomioimatta suositellut paketit.

Halutessasi voit käyttää jotain tällaista:

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

В yum ei --excludepkgs, ja ennen minun piti asentaa ryhmiä ja sitten poistaa paketteja.

Pakettien ja riippuvaisten ryhmien luetteloa voi tarkastella komennolla dnf group info core ryhmää varten core.

OS-tiedostojen mukauttaminen

Luodaan konfiguraatiot verkolle, fstab, grub2 ja käytetään AWS:n sisäisiä 169.254-osoitteita DNS:lle ja NTP:lle.

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

Täällä, GRUB_CMDLINE_LINUXissa, suosittelen määrittämään selinux=0 niille, jotka edelleen pelkäävät SELinuxia.

Initramfs:n uudelleenrakentaminen chrootissa

Kun olet muokannut grub- ja fstab-tiedostoja, sinun on rakennettava uudelleen.
Suoritamme päivityksen:

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

Täällä update-crypto-policies - valinnainen vainoharhaisille :)

"Myynnissä" voit tehdä näin:

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

Käyttöjärjestelmän lataamisen jälkeen komento update-crypto-policies --show antaa FIPS.

Autostart ja roskien puhdistus

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 - tarvitaan SELinux-kontekstitiedostojen automaattiseen asentamiseen ensimmäisessä käynnistyksessä.

Irrotetaan nyt levy:

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

AMI rekisteröinti

Saadaksesi ami ebs-levyltä, sinun on ensin otettava tilannekuva levystä:

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'

Sinun on odotettava jonkin aikaa. Tarkastetaan tila vastaanotetun SnapshotId:n avulla:

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

Kun saamme sen "State": "completed", voit rekisteröidä AMI:n ja tehdä sen julkiseksi:

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

Siinä kaikki. Nyt voit käynnistää ilmentymiä.

Tällä tavalla voit luoda kuvan mitä tahansa Linux-jakelua varten. Ainakin täsmälleen Debian (puhtaan järjestelmän asentamiseen debootstrapin avulla) ja RHEL-perhe.

PÄIVITYS Perustuu lukijoiden toiveisiin. Tämä prosessi voidaan automatisoida Pakkaaja, Vain automatisoida. Täällä Esitetään esimerkkimalli.

Lähde: will.com

Lisää kommentti