Búðu til þína eigin mynd með hreinu CentOS 8.1 í Amazon skýinu

Þessi leiðarvísir er „gaffill“ með sama nafni Grein um CentOS 5.9, og tekur mið af eiginleikum nýja stýrikerfisins. Sem stendur er engin opinber Centos8 mynd frá centos.org á AWS Marketplace.

Eins og þú veist, í Amazon skýinu eru sýndartilvik hleypt af stokkunum byggð á myndum (svokallaða AMI). Amazon útvegar mikinn fjölda þeirra; þú getur líka notað opinberar myndir sem unnar eru af þriðja aðila, sem skýjaveitan ber að sjálfsögðu enga ábyrgð á. En stundum þarftu hreina kerfismynd með nauðsynlegum breytum, sem er ekki á listanum yfir myndir.

Þá er eina leiðin út að búa til eigin AMI.

Opinbera skjölin lýsa leið búa til „tilviksstýrt AMI“.

Ókosturinn við þessa nálgun er að fullunna myndinni þarf einnig að breyta í „EBS-studd AMI“. Einnig er vert að taka eftir Cockpit Image Builder. Það gerir þér kleift að búa til sérsniðnar myndir, í CLI eða WEB GUI ham, en þegar þú ert nú þegar með Centos 8.

Hvernig á að búa til þitt eigið EBS-studd AMI í Amazon skýinu án millistigs verður fjallað um í þessari grein.

Aðgerðaáætlun

  • Undirbúðu umhverfið
  • Settu upp hreint kerfi og gerðu nauðsynlegar stillingar
  • Taktu mynd af disknum
  • Skráðu AMI

Undirbúningur umhverfisins

Í okkar tilgangi, hvaða opinbert Centos 7 dæmi hvaða lögun sem er, jafnvel t2.micro. Þú getur keyrt það í gegnum 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}

Skipunin mun vekja upp tilvik í VPC sem tilgreint undirnetauðkenni tilheyrir. Undirnetið á að vera opinbert og SG 'default' leyfir allt.

Nú skulum við skrá okkur inn á tilvikið í gegnum ssh, uppfæra kerfið, setja upp dnf og endurræsa:

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

Allar frekari aðgerðir verða framkvæmdar frá kl root.

Að setja upp hreint Centos 8.1

Skipulag skráakerfis og uppsetning skiptinga

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

Að búa til skráartré

RPM kerfið gerir þér kleift að undirbúa skráartré á auðveldan og fljótlegan hátt fyrir framtíðar stýrikerfi:

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 

Ég tel það ákjósanlegt að framkvæma síðustu skipunina á þennan hátt, með því að setja upp sérstaka pakka, og vertu viss um að hunsa ráðlagða pakka.

Ef þú vilt geturðu notað eitthvað eins og þetta:

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

В yum ekki --excludepkgs, og áður en ég þurfti að setja upp hópa og fjarlægja síðan pakka.

Hægt er að skoða lista yfir pakka og háða hópa með skipuninni dnf group info core fyrir hóp core.

OS skrá aðlögun

Við skulum búa til stillingar fyrir netið, fstab, grub2 og nota AWS innri 169.254 vistföng fyrir DNS og 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

Það er hér, í GRUB_CMDLINE_LINUX, sem ég mæli með að tilgreina selinux=0, fyrir þá sem eru enn hræddir við SELinux.

Endurbyggja initramfs í chroot

Eftir að hafa breytt grub og fstab skránum þarftu að endurbyggja.
Við framkvæmum uppfærsluna:

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 - valfrjálst, fyrir ofsóknarbrjálaða :)

Fyrir „sölu“ geturðu gert þetta:

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

Eftir að stýrikerfið hefur verið hlaðið, skipunin update-crypto-policies --show mun gefa út FIPS.

Sjálfvirk start og sorphreinsun

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 - þarf til að setja sjálfkrafa upp SELinux samhengisskrár við fyrstu ræsingu.

Nú skulum við aftengja diskinn:

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

AMI skráning

Til að fá ami af ebs diski þarftu fyrst að taka skyndimynd af disknum:

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'

Þú verður að bíða í nokkurn tíma. Við skulum athuga stöðuna með því að nota móttekið SnapshotId:

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

Þegar við fáum það "State": "completed", þú getur skráð AMI og gert það opinbert:

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

Það er allt og sumt. Nú geturðu ræst tilvik.

Á þennan hátt geturðu búið til mynd, líklegast, með hvaða Linux dreifingu sem er. Að minnsta kosti nákvæmlega Debian (notar debootstrap til að setja upp hreint kerfi) og RHEL fjölskylduna.

UPDATE Byggt á beiðnum frá lesendum. Þetta ferli er hægt að gera sjálfvirkt Pakkari, Aðeins sjálfvirk. Тут Dæmi um sniðmát er kynnt.

Heimild: www.habr.com

Bæta við athugasemd