- با استفاده از یک خادم PXE میتوان یک سیستم عامل را بر روی تعداد زیادی از خادمهای خام نصب و راهاندازی کرد.
- حال در صورتی که قصد نصب و استفاده از چندین سیستم عامل با پیکربندیهای متفاوت را داشته باشیم، استفاده از یک خادم PXE به تنهایی راه حل مناسبی نیست.
- در این زمان نرم افزاری مثل Cobbler معرفی میشود که علاوهبر این که یک خادم PXE حساب میشود، قابلیت ایجاد کارنامه (Profile) از پیکربندیهای متفاوت از یک یا چند سیستمعامل را دارد.
- همچنین نرم افزار Cobbler یک رابط تحت وب نیز داشته که باعث راحتی فرآیند استفاده میشود.
- نمایی از رابط تحت وب نرم افزار Cobbler :

- نمایی از فهرستی که ابزار Cobbler در اختیار یک خادم خام قرار میدهد :

فرضیات
- مراحل نصب و پیکربندی در سیستمعامل Centos نسخهی ۷ دنبال میشود.
- نصب و راهاندازی ابزار Cobbler توسط مخزن انجام میشود.
- خادمی که بر روی آن نرم افزار Cobbler نصب میشود، خود وظیفهی سرویسدهی DHCP و DNS را بر عهده دارد.
تغییر وضعیت SELINUX :
- به منظور تغییر وضعیت Selinux پروندهی زیر را باز کنید :
# vim /etc/sysconfig/selinux
- سپس به دنبال عبارت SELINUX گشته و مقدار آن را برابر با disabled قرار دهید.
SELINUX=disabled
- همچنین میتوان مقدار SELINUX را برابر با permissive قرار داد.
نصب و راهاندازی
- به منظور نصب و راهاندازی این سرویس :
# yum -y update
# yum install -y epel-release
# yum -y update
# yum -y install cobbler cobbler-web dnsmasq syslinux pykickstart xinetd
# yum -y install dhcp debmirror pcs pacemaker fence-agents-all bind
# systemctl enable cobblerd
# systemctl enable httpd
# systemctl enable xinetd
# systemctl enable named
# systemctl enable rsyncd.service
# systemctl disable dhcpd
- در صورتی که از دیوارآتش استفاده میکنید، پورت ۸۰ و ۴۴۳ را باز کنید. پیشنهاد میشود سرویس firewalld.service متوقف و غیرفعال شود. برای این منظور :
# systemctl disable firewalld.service
# systemctl stop firewalld.service
- در نهایت میتوان وارد رابط تحت وب شد :
https://<Server_IP_Address>/cobbler_web
- توجه نمایید که باید آدرس IP خادم را وارد نمایید.
- پیشنهاد میشود یک بار خادم راهاندازی مجدد شود.
# reboot
- پس از بالا آمدن خادم، سرویسهای مورد نیاز بررسی شوند :
# systemctl status cobblerd | grep Active -B 1
# systemctl status httpd | grep Active -B 1
# systemctl status xinetd | grep Active -B 1
# systemctl status named | grep Active -B 1
پیکربندی
- ابتدای پروندهی زیر را با یک ویرایشگر باز نمایید :
# vim /etc/cobbler/settings
- سپس مقادیر زیر را به صورت زیر تغییر دهید :
default_password_crypted: "$1$j9/aR8Et$uovwBsGM.cLGcwR.Nf7Qq0"
manage_dhcp: 1
manage_dns: 1
pxe_just_once: 1
next_server: 192.168.1.1
server: 192.168.1.1
- برای مقادیر next_server و server آدرس IP خادم را وارد نمایید.
- مقدار default_password_crypted کلمهی عبوری است که برای سیستمعاملهایی که بر روی خادمهای خام نصب میشوند، در نظر گرفته میشود.
- به منظور تولید این نوع Hash به صورت زیر عمل کنید :
# openssl passwd -1
- در مرحلهی بعد پروندهی زیر را با یک ویرایشگر باز کنید :
# vim /etc/cobbler/dhcp.template
- مقادیر پر رنگ شده را متناسب با شبکه و خادم تغییر دهید :
subnet 172.168.10.0 netmask 255.255.255.0 {
option routers 172.168.10.5;
option domain-name-servers 172.168.10.5;
option subnet-mask 255.255.255.0;
range dynamic-bootp 172.168.10.80 172.168.10.140;
default-lease-time 21700;
max-lease-time 43100;
next-server $next_server;
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
if option pxe-system-type = 00:02 {
filename "ia64/elilo.efi";
} else if option pxe-system-type = 00:06 {
filename "grub/grub-x86.efi";
} else if option pxe-system-type = 00:07 {
filename "grub/grub-x86_64.efi";
} else {
filename "pxelinux.0";
}
}
}
- در مرحلهی بعد پروندهی زیر را با یک ویرایشگر باز کنید :
# vim /etc/cobbler/dnsmasq.template
- مقدار dhcp-range را متناسب با شبکه و خادم تغییر دهید :
dhcp-range=172.168.10.80,172.168.10.140
- در ادامه پروندهی زیر را با یک ویرایشگر باز کنید :
# vim /etc/xinetd.d/tftp
- مقدار عبارت disable را برابر با no قرار دهید.
- به منظور دریافت گروهی از تنظیمات مربوط به Boot Loader دستور زیر را اجرا کنید :
# cobbler get-loaders
- دستور بالا باعث میشود تا پروندههای مربوطه از طریق اینترنت دانلود شوند.
- در صورتی که دستور بالا به صورت موفقیت آمیز اجرا شود، با خروجیای مشابه زیر روبهرو خواهید شد :
downloading https://cobbler.github.io/loaders/README to /var/lib/cobbler/loaders/README
downloading https://cobbler.github.io/loaders/COPYING.elilo to /var/lib/cobbler/loaders/COPYING.elilo
downloading https://cobbler.github.io/loaders/COPYING.yaboot to /var/lib/cobbler/loaders/COPYING.yaboot
downloading https://cobbler.github.io/loaders/COPYING.syslinux to /var/lib/cobbler/loaders/COPYING.syslinux
downloading https://cobbler.github.io/loaders/elilo-3.8-ia64.efi to /var/lib/cobbler/loaders/elilo-ia64.efi
downloading https://cobbler.github.io/loaders/yaboot-1.3.17 to /var/lib/cobbler/loaders/yaboot
downloading https://cobbler.github.io/loaders/pxelinux.0-3.86 to /var/lib/cobbler/loaders/pxelinux.0
downloading https://cobbler.github.io/loaders/menu.c32-3.86 to /var/lib/cobbler/loaders/menu.c32
downloading https://cobbler.github.io/loaders/grub-0.97-x86.efi to /var/lib/cobbler/loaders/grub-x86.efi
downloading https://cobbler.github.io/loaders/grub-0.97-x86_64.efi to /var/lib/cobbler/loaders/grub-x86_64.efi
- در صورتی که خادم دسترسی به اینترنت ندارد، هر یک از پروندهها را دریافت و در مسیر ذکر شده انتقال دهید.
- در ادامه پروندهی زیر را با یک ویرایشگر باز کنید :
# vim /etc/debmirror.conf
- سپس به دنبال خطوطی که با عبارات dists و arches شروع میشوند گشته و آنها را تبدیل به توضیحات کنید. (با استفاده از #)
# @dists="sid";
# @arches="i386";
- در نهایت سرویسهای مورد نیاز را یک بار راهاندازی مجدد کنید :
# systemctl restart cobblerd
# systemctl restart httpd
# systemctl restart xinetd
# systemctl restart named
# systemctl stop dhcpd
خطایابی
- به منظور بررسی اشکالات موجود از سویج check ابزار Cobbler به شکل زیر استفاده میشود :
# cobbler check
- در خروجی دستور بالا، فهرستی از خطاها نمایش داده میشود که باید یکی یکی حل شوند.
- در صورتی که در زمان اجرای این ابزار با خطای سیستمی (اشاره به پروندههای Python) مواجه شدید، بررسی نمایید که آدرس IP کارت شبکه با آدرسی که در پروندهی تنظیمات اشاره کردید، یکی باشد.
- در صورتی که هیچ مشکلی وجود نداشته باشد، خروجیای مشابه زیر دریافت خواهید کرد :
No configuration problems found. All systems go.
- در نهایت در صورتی که هیچ مشکلی وجود نداشت. دستور زیر را اجرا کنید :
# cobbler sync
درج سیستمعامل
- پس از نصب و پیکربندی ابزار Cobbler باید سیستمعاملهایی که مد نظر داریم را به این ابزار اضافه کنیم.
- برای این منظور داخل مسیر mnt/ یک پوشه با نام ISO ایجاد میکنیم.
# mkdir /mnt/iso
- در نهایت به ازای هر سیستم، یک پوشه درون پوشهی ISO ایجاد میکنیم.
- به عنوان مثال برای اضافه کردن دو سیستمعامل Ubuntu و Centos ابتدا پروندههای ISO این دو سیستمعامل را به خادم متقل کرده سپس آنها درون مسیرهای گفته شده Mount میکنیم.
# mkdir /mnt/iso/ubuntu-16.04.6-server-amd64/
# mount -o loop ubuntu-16.04.6-server-amd64.iso /mnt/iso/ubuntu-16.04.6-server-amd64/
# mkdir /mnt/iso/CentOS-7-x86_64-Minimal-1908/
# mount -o loop CentOS-7-x86_64-Minimal-1908.iso /mnt/iso/CentOS-7-x86_64-Minimal-1908
- فرآیند بالا را برای هر سیستمعاملی که مد نظر دارید، انجام دهید.
- در نهایت سیستمعامل را به ابزار Cobbler معرفی کنید. برای این منظور :
# cobbler import --arch=x86_64 --path=/mnt/iso/ubuntu-16.04.6-server-amd64/ --name=Ubuntu16
- دستور بالا را برای سیستمعاملهای دیگر نیز اجرا کنید.
- در مرحلهی بعد :
# cobbler signature update
- در نهایت به منظور مشاهده فهرست سیستمعامل موجود در ابزار Cobbler به صورت زیر عمل کنید :
# cobbler distro list
- لازم به ذکر است که این فهرست را میتوان از طریق رابط تحت وب نیز مشاهده نمود.
انتساب پروندهی Kickstart
- با استفاده از پروندههایی ملقب به Kickstart میتوان تعریف نمود که مراحل نصب سیستمعامل و حتی برخی از تنظیمات مربوط به بعد از نصب سیستمعامل، چگونه باشد.
- به عنوان مثال میتوان تعیین نمود که نحوهی پارتیشن بندی به چه صورت باشد و یا کیبورد بر روی چه تنظیم شود و یا حتی Timezone بر روی چه منطقهای لحاظ شود.
- طبیعتا فرآیند نصب هر سیستمعامل متفاوت است. به عنوان مثال فرآیند نصب سیستمعامل Ubuntu با Centos و ESXi متفاوت است.
- لذا انتظار میروند برای هر یک از این سیستمعامل یک پروندهی Kickstart متناسب با آن تنظیم شود.
- خوشبختانه پروندهی Kickstart پیشفرض یعنی sample.seed با سیستمعامل Ubuntu (نسخهی ۱۶.۰۴ بررسی شده است.) سازگار است. آدرس این پرونده به شرح زیر است :
/var/lib/cobbler/kickstarts/sample.seed
- به منظور اعمال تغییرات خاص، پیشنهاد میشود یک رونوشت از این پرونده تهیه شده و تغییرات را درون آن اعمال کرد.
- به منظور انتساب یک پروندهی Kickstart به یک سیستمعامل میتوان از رابط وب استفاده نمود و یا به صورت زیر عمل کرد :
# cobbler profile edit --name=Ubuntu16 --kickstart=/var/lib/cobbler/kickstarts/myfile.ks
- در نهایت به منظور اعمال تغییرات از سویچ sync به شکل زیر استفاده کنید :
# cobbler sync
- در صورتی که از رابط وب استفاده میکنید. باید از بخش Actions بر روی گزینهی Sync کلیک کنید.
تنظیم فهرست Boot Loader
- به منظور تغییر در اولویت و یا نوشتههای فهرستی که در زمان Boot نمایش داده میشود، پروندهی زیر را با یک ویرایشگر باز کنید :
# vim /var/lib/tftpboot/pxelinux.cfg/default
- از قسمت MENU TITLE میتوانید یک نام دلخواه انتخاب کنید.
- از قسمت TIMEOUT میتوانید مقدار زمان انتظار در صفحهی Boot Loader را مشخص نمایید.
- هر یک از LABEL ها به منزلهی انتخاب یک گزینه در Boot Loader است.
- به صورت پیشفرض اولویت با گزینهی Local است.
- به منظور تغییر این اولویت کافیست عبارت DEFAULT را در جلوی عبارت MENU گزینهای که مد نظر دارید، قرار دهید.
- به عنوان مثال :
LABEL local
MENU LABEL (local)
MENU
LOCALBOOT -1
LABEL Ubuntu16-hwe-x86_64
kernel /images/Ubuntu16-hwe-x86_64/linux
MENU DEFAULT LABEL Ubuntu16-hwe-x86_64
append initrd=/images/Ubuntu16-hwe-x86_64/initrd.gz ksdevice=bootif lang= text auto-install/enable=true priority=critical url=http://192.168.182.100/cblr/svc/op/ks/profile/Ubuntu16-hwe-x86_64 hostname=Ubuntu16-hwe-x8664 domain=local.lan suite=xenial

- نرم افزار Cobbler بر روی سیستمعامل Centos نسخهی ۷ ساخت ۱۹۰۸ آزمایش و بررسی شده است.
- سیستمعامل Ubuntu نسخهی ۱۶.۰۴ به عنوان سیستمعامل نصب شونده بر روی خادم آزمایش و بررسی شده است.