Ин дастур як "форк"-и ҳамон ном аст мақолаҳо дар бораи CentOS 5.9 ва хусусиятҳои OS навро ба назар мегирад. Дар айни замон ягон тасвири расмии Centos8 аз centos.org дар Marketplace AWS мавҷуд нест.
Тавре ки шумо медонед, дар абрҳои Amazon инстансияҳои виртуалӣ дар асоси тасвирҳо (ба ном AMI). Amazon шумораи зиёди онҳоро таъмин мекунад; шумо инчунин метавонед тасвирҳои оммавии аз ҷониби шахсони сеюм таҳияшударо истифода баред, ки барои онҳо провайдери абр, албатта, ҳеҷ гуна масъулият надорад. Аммо баъзан ба шумо тасвири системаи тоза бо параметрҳои зарурӣ лозим аст, ки дар рӯйхати тасвирҳо нест.
Он гоҳ роҳи ягонаи баромадан ин сохтани AMI-и худ аст.
Ҳуҷҷатҳои расмӣ тавсиф мекунанд роҳ эҷод кардани "AMI аз мағозаи намунавӣ".
Камбудии ин равиш дар он аст, ки тасвири тайёр инчунин бояд ба "AMI-и аз EBS дастгирӣшаванда" табдил дода шавад. Инчунин қобили қайд аст, ки Cockpit Image Builder. Он ба шумо имкон медиҳад, ки тасвирҳои фармоиширо дар CLI ё WEB GUI режим, аммо вақте ки шумо аллакай Centos 8 доред.
Чӣ тавр сохтани AMI-и худро аз ҷониби EBS дар абри Амазонка бидуни қадамҳои мобайнӣ дар ин мақола муҳокима хоҳад кард.
Нақшаи амал
- Муҳити зистро омода кунед
- Системаи тозаро насб кунед ва танзимоти заруриро созед
- Сурати дискро гиред
- AMI-ро ба қайд гиред
Омода кардани муҳити зист
Барои максадхои мо, ягон намунаи расмии Centos 7 ҳама гуна шакл, ҳатто t2.micro. Шумо метавонед онро тавассути 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}
Фармон як мисолро дар VPC эҷод мекунад, ки идентификати зершабакаи мушаххас ба он тааллуқ дорад. Зершабақа бояд оммавӣ бошад ва SG 'default' ҳама чизро иҷозат медиҳад.
Акнун биёед ба мисол тавассути ssh ворид шавем, системаро навсозӣ кунем ва насб кунем dnf
ва аз нав оғоз кунед:
sudo yum update -y && sudo yum install -y dnf && sudo reboot
Ҳамаи амалиётҳои минбаъда аз он анҷом дода мешаванд root
.
Насб кардани Centos 8.1 тоза
Тарҳбандии системаи файлӣ ва васлкунии қисмҳо
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
Эҷоди дарахти директория
Системаи RPM ба шумо имкон медиҳад, ки ба осонӣ ва зуд дарахти директорияро барои ОС оянда омода созед:
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
Ман бо ин роҳ иҷро кардани фармони охиринро бо насби бастаҳои мушаххас беҳтарин мешуморам ва ҳатман бастаҳои тавсияшударо сарфи назар кунед.
Агар шумо хоҳед, шумо метавонед чунин чизеро истифода баред:
dnf --installroot=$ROOTFS groupinstall base core
--excludepkgs "NetworkManager*"
-e "i*-firmware"
В yum
нест --excludepkgs
, ва пеш аз он ки ман маҷбур будам, ки гурӯҳҳоро насб кунам ва бастаҳоро хориҷ кунам.
Рӯйхати бастаҳо ва гурӯҳҳои вобастаро бо фармон дидан мумкин аст dnf group info core
барои як гурӯҳ core
.
Мутобиқсозии файли OS
Биёед конфигуратсияҳоро барои шабака, fstab, grub2 созем ва суроғаҳои дохилии AWS 169.254-ро барои DNS ва 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
Маҳз дар ин ҷо, дар GRUB_CMDLINE_LINUX, ман тавсия медиҳам, ки selinux=0-ро барои онҳое, ки ҳанӯз аз SELinux метарсанд, нишон диҳам.
Барқарор кардани initramfs дар chroot
Пас аз таҳрири файлҳои grub ва fstab, шумо бояд аз нав барқарор кунед.
Мо навсозӣ мекунем:
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
- ихтиёрӣ, барои параноид :)
Барои "фурӯш" шумо метавонед ин корро кунед:
chroot $ROOTFS fips-mode-setup --enable
chroot $ROOTFS grub2-mkconfig -o /boot/grub2/grub.cfg
chroot $ROOTFS grub2-install $DEVICE
Пас аз бор кардани ОС, фармон update-crypto-policies --show
FIPS мебарорад.
Автостарт ва тозакунии партов
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
- барои ба таври худкор насб кардани файлҳои контексти SELinux дар бори аввал лозим аст.
Акнун биёед дискро ҷудо кунем:
sync
umount $ROOTFS/{proc,sys,dev,run}
umount $ROOTFS
Бақайдгирии AMI
Барои гирифтани ami аз диски ebs, шумо аввал бояд акси дискро гиред:
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'
Шумо бояд чанд вақт интизор шавед. Биёед вазъиятро бо истифода аз SnapshotId-и гирифташуда тафтиш кунем:
aws ec2 describe-snapshots --region us-east-1 --snapshot-ids snap-0b665542fc59e58ed
Вақте ки мо онро мегирем "State": "completed"
, шумо метавонед AMI-ро ба қайд гиред ва онро оммавӣ гардонед:
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}]'
Ҳамааш ҳамин. Акнун шумо метавонед мисолҳоро оғоз кунед.
Бо ин роҳ, шумо метавонед тасвиреро эҷод кунед, эҳтимолан бо ҳама тақсимоти Linux. Ҳадди ақал маҳз Debian (бо истифода аз debootstrap барои насб кардани системаи тоза) ва оилаи RHEL.
UPDATE Дар асоси дархости хонандагон. Ин равандро автоматӣ кардан мумкин аст Packer, Танҳо автоматӣ. дар ин ҷо Намунаи намуна пешниҳод карда мешавад.
Манбаъ: will.com