A ’cruthachadh an ìomhaigh agad fhèin le CentOS 8.1 fìor-ghlan ann an sgòth Amazon

Tha an iùl seo na “forc” den aon ainm artaigilean mu CentOS 5.9, agus a’ toirt aire do fheartan an OS ùr. Chan eil ìomhaigh oifigeil Centos8 ann an-dràsta bho centos.org ann am Margaidh AWS.

Mar a tha fios agad, ann an sgòth Amazon thèid suidheachaidhean brìgheil a chuir air bhog stèidhichte air ìomhaighean (ris an canar Ami). Tha Amazon a’ toirt seachad àireamh mhòr dhiubh; faodaidh tu cuideachd ìomhaighean poblach ullachadh le treas phàrtaidhean a chleachdadh, air nach eil uallach sam bith air an t-solaraiche sgòthan, gu dearbh. Ach uaireannan feumaidh tu ìomhaigh siostam glan leis na paramadairean riatanach, nach eil air an liosta de dhealbhan.

An uairsin is e an aon dòigh a-mach an AMI agad fhèin a dhèanamh.

Tha na sgrìobhainnean oifigeil a’ mìneachadh slighe cruthachadh “AMI le taic stòrais”.

Is e ana-cothrom an dòigh-obrach seo gum feumar an ìomhaigh chrìochnaichte a thionndadh gu bhith na “AMI le taic EBS”. Is fhiach a thoirt fa-near cuideachd Cockpit Image Builder. Leigidh e leat ìomhaighean gnàthaichte a chruthachadh, ann an CLI no WEB Gui modh, ach nuair a tha Centos 8 agad mu thràth.

Bruidhnidh an artaigil seo mar a chruthaicheas tu an AMI agad fhèin le taic EBS ann an sgòth Amazon gun cheumannan eadar-mheadhanach.

Plana gnìomh

  • Ullaich an àrainneachd
  • Stàlaich siostam glan agus dèan na roghainnean riatanach
  • Gabh dealbh den diosga
  • Clàraich AMI

Ag ullachadh na h-àrainneachd

Airson ar n-adhbharan, sam bith Eisimpleir oifigeil Centos 7 cumadh sam bith, eadhon t2.micro. Faodaidh tu a ruith tron ​​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}

Togaidh an àithne eisimpleir anns an VPC dham buin an subnet-id ainmichte. Tha còir gum bi an subnet poblach, agus tha SG ‘default’ a’ ceadachadh a h-uile càil.

A-nis leig leinn logadh a-steach don eisimpleir tro ssh, ùraich an siostam, stàlaich dnf agus ath-thòisich:

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

Thèid a h-uile gnìomh eile a dhèanamh bho root.

A’ stàladh glan Centos 8.1

Cruth siostam faidhle agus stàladh sgaradh

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

Cruthachadh craobh eòlaire

Leigidh an siostam RPM leat craobh eòlaire ullachadh gu furasta agus gu sgiobalta airson an OS san àm ri teachd:

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 

Tha mi den bheachd gu bheil e nas fheàrr an àithne mu dheireadh a chuir an gnìomh san dòigh seo, le bhith a’ stàladh pacaidean sònraichte, agus bi cinnteach nach leig thu seachad na pacaidean a tha air am moladh.

Ma thogras tu, faodaidh tu rudeigin mar seo a chleachdadh:

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

В yum sam bith --excludepkgs, agus mus robh agam ri buidhnean a chuir a-steach agus an uairsin pacaidean a thoirt air falbh.

Faodar liosta nam pasganan agus na buidhnean eisimeileach fhaicinn leis an àithne dnf group info core airson buidheann core.

Gnàthachadh faidhle OS

Cruthaichidh sinn configs airson an lìonra, fstab, grub2 agus cleachdaidh sinn seòlaidhean 169.254 taobh a-staigh AWS airson DNS agus 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

'S ann an seo, ann an GRUB_CMDLINE_LINUX, a tha mi a' moladh selinux=0 a shònrachadh, dhaibhsan air a bheil eagal SELinux fhathast.

Ath-thogail initramfs ann an chroot

Às deidh dhut na faidhlichean grub agus fstab a dheasachadh, feumaidh tu ath-thogail.
Bidh sinn a’ dèanamh an ùrachaidh:

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

an seo update-crypto-policies - roghainneil, airson an paranoid :)

Airson “reic”, faodaidh tu seo a dhèanamh:

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

Às deidh an OS a luchdachadh, an àithne update-crypto-policies --show cuiridh e a-mach FIPS.

Autostart agus glanadh sgudal

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 - feumach air faidhlichean co-theacsa SELinux a chuir a-steach gu fèin-ghluasadach air a’ chiad bhròg.

A-nis leig dhuinn an diosc a dhì-mhunntachadh:

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

Clàradh AMI

Gus ami fhaighinn bho dhiosg ebs, feumaidh tu an toiseach dealbh den diosc a ghabhail:

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'

Feumaidh tu feitheamh beagan ùine. Bheir sinn sùil air an inbhe a’ cleachdadh an SnapshotId a fhuaireadh:

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

Nuair a gheibh sinn e "State": "completed", faodaidh tu AMI a chlàradh agus a dhèanamh poblach:

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

Sin e. A-nis faodaidh tu eisimpleirean a chuir air bhog.

San dòigh seo, faodaidh tu ìomhaigh a chruthachadh, as coltaiche, le cuairteachadh Linux sam bith. Co-dhiù dìreach Debian (a’ cleachdadh debootstrap gus siostam glan a chuir a-steach) agus an teaghlach RHEL.

ÙR Stèidhichte air iarrtasan bho luchd-leughaidh. Faodaidh am pròiseas seo a bhith fèin-ghluasadach Pacair, Dèan fèin-ghluasad a-mhàin. an seo Tha eisimpleir teamplaid air a thaisbeanadh.

Source: www.habr.com

Cuir beachd ann