په ایمیزون کلاوډ کې د خالص CentOS 8.1 سره خپل عکس رامینځته کول

دا لارښود د ورته نوم "فورک" دی مقالې د CentOS 5.9 په اړه، او د نوي OS ځانګړتیاوې په پام کې نیسي. اوس مهال د AWS بازار ځای کې د centos.org څخه کوم رسمي Centos8 عکس شتون نلري.

لکه څنګه چې تاسو پوهیږئ ، په ایمیزون کلاوډ کې مجازی مثالونه د عکسونو پراساس پیل شوي (په نوم یادیږي AMI). ایمیزون د دوی لوی شمیر چمتو کوي؛ تاسو کولی شئ د دریمې ډلې لخوا چمتو شوي عامه عکسونه هم وکاروئ ، د کوم لپاره چې کلاوډ چمتو کونکی ، البته ، هیڅ مسؤلیت نلري. مګر ځینې وختونه تاسو د اړین پیرامیټونو سره د پاک سیسټم عکس ته اړتیا لرئ ، کوم چې د عکسونو لیست کې ندي.

بیا یوازینۍ لار دا ده چې خپل AMI جوړ کړئ.

رسمي اسناد بیانوي لاره د "مثال پلورنځي په ملاتړ AMI" رامینځته کول.

د دې تګلارې نیمګړتیا دا ده چې بشپړ شوی عکس به اړتیا ولري چې په "EBS- ملاتړ AMI" کې بدل شي. د یادولو وړ هم د کاکپیټ عکس جوړونکی دی. دا به تاسو ته اجازه درکړي چې دودیز عکسونه رامینځته کړئ CLI یا ویب GUI حالت، مګر کله چې تاسو دمخه Centos 8 لرئ.

دا مقاله به په دې اړه بحث وکړي چې څنګه د منځني مرحلو پرته په ایمیزون کلاوډ کې خپل د EBS ملاتړ شوی AMI رامینځته کړئ.

کاري پلان

  • چاپیریال چمتو کړئ
  • یو پاک سیسټم نصب کړئ او اړین ترتیبات جوړ کړئ
  • د ډیسک یو عکس واخلئ
  • AMI ثبت کړئ

د چاپیریال چمتو کول

زموږ د موخو لپاره، هر رسمي Centos 7 مثال هر شکل، حتی t2.micرو. تاسو کولی شئ دا د 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 کې یوه بیلګه رامینځته کړي چې مشخص شوي فرعي نیټ ID پورې اړه لري. فرعي نیټ باید عامه وي، او SG 'ډیفالټ' هرڅه ته اجازه ورکوي.

اوس راځئ چې د 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 سیسټم تاسو ته اجازه درکوي په اسانۍ او چټکۍ سره د راتلونکي OS لپاره د لارښود ونې چمتو کړئ:

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 لپاره تشکیلات جوړ کړو او د DNS او NTP لپاره د AWS داخلي 169.254 پتې وکاروو.

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 بیا رغول

د 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

د OS له پورته کولو وروسته، کمانډ update-crypto-policies --show FIPS به صادر کړي.

Autostart او د کثافاتو پاکول

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

بس نور څه نه. اوس تاسو کولی شئ مثالونه پیل کړئ.

په دې توګه، تاسو کولی شئ یو انځور جوړ کړئ، ډیری احتمال، د هر لینکس ویش سره. لږترلږه په سمه توګه Debian (د پاک سیسټم نصبولو لپاره د debootstrap کارول) او د RHEL کورنۍ.

تازه د لوستونکو د غوښتنو پر بنسټ. دا پروسه په اتوماتيک ډول ترسره کیدی شي بسته، یوازې اتوماتیک. ټوټ د نمونې نمونه وړاندې کیږي.

سرچینه: www.habr.com

Add a comment