Panduan ini adalah sebuah garpu dari CentOS 5.9 artikel dari nama yang sama , dan memperhitungkan fitur dari OS baru. Saat ini tidak ada gambar Centos8 resmi dari centos.org di AWS Marketplace.
Seperti yang Anda ketahui, di cloud Amazon, instance virtual diluncurkan berdasarkan gambar (yang disebut AMI ). Amazon menyediakan sejumlah besar dari mereka, Anda juga dapat menggunakan gambar publik yang disiapkan oleh pihak ketiga, di mana penyedia cloud, tentu saja, tidak bertanggung jawab. Tetapi kadang-kadang Anda membutuhkan gambar dari sistem yang bersih dengan parameter yang diperlukan, yang tidak ada dalam daftar gambar.
Maka satu-satunya jalan keluar adalah membuat AMI Anda.
Dokumentasi resmi menjelaskan cara membuat "instance AMI yang didukung toko."
Kerugian dari pendekatan ini adalah bahwa gambar yang sudah jadi juga perlu dikonversi ke AMI yang didukung EBS. Yang juga perlu diperhatikan adalah Cockpit Image Builder. Ini akan memungkinkan Anda untuk membuat gambar khusus dalam mode CLI atau WEB GUI , tetapi ketika Anda sudah memiliki Centos 8.
Cara membuat AMI yang didukung EBS di cloud Amazon tanpa langkah perantara akan dibahas dalam artikel ini.
Rencana aksi
- Persiapkan lingkungan
- Instal sistem yang bersih, buat pengaturan yang diperlukan
- Buat snapshot (snapshot) dari disk
- Daftarkan AMI
Persiapan lingkungan
Untuk tujuan kami, setiap instance resmi Centos 7 dalam bentuk apa pun cocok, setidaknya t2.micro. Anda dapat menjalankannya melalui 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, subnet-id. , , 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
.
, fstab, grub2 169.254 AWS 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/# \0/" $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
ebs- ami, :
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, . .