рдЕрдореЗрдЬрд╝реЕрди рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рд╢реБрджреНрдз CentOS 8.1 рдХреЗ рд╕рд╛рде рдЕрдкрдиреА рдЫрд╡рд┐ рдмрдирд╛рдПрдВ

рдпрд╣ рдореИрдиреБрдЕрд▓ рдЙрд╕реА рдирд╛рдо рдХреЗ CentOS 5.9 рд▓реЗрдЦ рдХрд╛ рдПрдХ рдХрд╛рдВрдЯрд╛ рд╣реИ, рдФрд░ рдирдП OS рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред рд╡рд░реНрддрдорд╛рди рдореЗрдВ AWS рдорд╛рд░реНрдХреЗрдЯрдкреНрд▓реЗрд╕ рдореЗрдВ centos.org рд╕реЗ рдХреЛрдИ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ Centos8 рдЫрд╡рд┐ рдирд╣реАрдВ рд╣реИред


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЕрдореЗрдЬрд╝реЕрди рдХреНрд▓рд╛рдЙрдб рдореЗрдВ, рдЫрд╡рд┐рдпреЛрдВ (рддрдерд╛рдХрдерд┐рдд рдПрдПрдордЖрдИ ) рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрднрд╛рд╕реА рдЙрджрд╛рд╣рд░рдг рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ ред рдЕрдореЗрдЬрд╝реЕрди рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЖрдк рддреАрд╕рд░реЗ рдкрдХреНрд╖ рджреНрд╡рд╛рд░рд╛ рддреИрдпрд╛рд░ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЫрд╡рд┐рдпреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдХреНрд▓рд╛рдЙрдб рдкреНрд░рджрд╛рддрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдирд╣реАрдВ рдЙрдард╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдЖрдкрдХреЛ рдЖрд╡рд╢реНрдпрдХ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдкреНрд░рдгрд╛рд▓реА рдХреА рдЫрд╡рд┐ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЬреЛ рдЫрд╡рд┐рдпреЛрдВ рдХреА рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рд╣реИред


рдлрд┐рд░ рдПрдХ рд╣реА рд░рд╛рд╕реНрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЕрдкрдирд╛ рдПрдПрдордЖрдИ рдмрдирд╛рдПрдВред


рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ "рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╕реНрдЯреЛрд░-рд╕рдорд░реНрдерд┐рдд рдПрдПрдордЖрдИ" рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдПред


рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдиреБрдХрд╕рд╛рди рдпрд╣ рд╣реИ рдХрд┐ рд╕рдорд╛рдкреНрдд рдЫрд╡рд┐ рдХреЛ рднреА рдИрдмреАрдПрд╕ рд╕рдорд░реНрдерд┐рдд рдПрдПрдордЖрдИ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХреЙрдХрдкрд┐рдЯ рдЗрдореЗрдЬ рдмрд┐рд▓реНрдбрд░ред рдпрд╣ рдЖрдкрдХреЛ CLI рдпрд╛ WEB GUI рдореЛрдб рдореЗрдВ рдХрд╕реНрдЯрдо рдЪрд┐рддреНрд░ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ , рд▓реЗрдХрд┐рди рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА Centos 8 рд╣реИред


рдмрд┐рдирд╛ рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдЪрд░рдгреЛрдВ рдХреЗ рдЕрдореЗрдЬрд╝реЕрди рдХреНрд▓рд╛рдЙрдб рдореЗрдВ рдЕрдкрдирд╛ рдИрдмреАрдПрд╕ рд╕рдорд░реНрдерд┐рдд рдПрдПрдордЖрдИ рдХреИрд╕реЗ рдмрдирд╛рдПрдВ, рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред


рдХрд╛рд░реНрдп рдпреЛрдЬрдирд╛


  • рдкрд░реНрдпрд╛рд╡рд░рдг рддреИрдпрд╛рд░ рдХрд░реЗрдВ
  • рдПрдХ рд╕реНрд╡рдЪреНрдЫ рдкреНрд░рдгрд╛рд▓реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ, рдЖрд╡рд╢реНрдпрдХ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХрд░реЗрдВ
  • рдбрд┐рд╕реНрдХ рдХрд╛ рдПрдХ рд╕реНрдиреИрдкрд╢реЙрдЯ (рд╕реНрдиреИрдкрд╢реЙрдЯ) рдмрдирд╛рдПрдВ
  • рдПрдПрдордЖрдИ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░реЗрдВ

рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рддреИрдпрд╛рд░реА


рд╣рдорд╛рд░реЗ рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рднреА рдЖрдХрд╛рд░ рдХрд╛ рдХреЛрдИ рднреА рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рд╕реЗрдВрдЯреЛрд╕ 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, 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, . .


All Articles