令和3年1月24日公開 令和4年11月22日更新
「Cobbler」で自宅の OS インストールを自動化した際のメモです。
技術系の記事は基本的にブログにて公開していますが、これは随時情報を追記したりするので、ホームページの方で紹介します。環境
- VMware 上の VM
- CentOS Stream 8
- 同セグメントで別に dhcpd を起動しているサーバーが存在
CentOS Stream 8 で確認します。epel をインストール後、cobbler をインストールします。
dnf install epel-release
dnf module enable cobblerdnf install cobbler cobbler-web python3-librepo
にてインストールします。
全て cobbler コマンドのみで操作する場合は、cobbler-web は不要です。
すでにインストールしていた何かの影響により、python3-django3 が邪魔をしているようでしたので、dnf swap python3-django3 python3-django で入れ替えました。Error:
Problem: problem with installed package python3-django3-3.1.4-1.el8.noarch
- package python3-django3-3.1.4-1.el8.noarch conflicts with python3-django provided by python3-django-2.2.17-1.el8.noarch
- package cobbler-web-3.2.0-2.module_el8+10474+71f42bad.noarch requires python3-django, but none of the providers can be installed
- conflicting requests
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages)インストールが終わったら、Enable しておきます。
systemctl enable cobblerd
systemctl enable tftpdCentOS Stream 9 の場合、下記を設置するととりあえず入りますが保証はありません。
cat /etc/yum.repos.d/cobbler-fedora.repo
[fedora-34]
name=Fedora 34 - $basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-34&arch=$basearch
enabled=1
countme=1
metadata_expire=7d
repo_gpgcheck=0
type=rpm
gpgcheck=0
includepkgs=cobbler*,python3-django,python3-pymongo,python3-bson詳細は、2022/10/22 公開ブログ記事に記載していますが、バージョン 3.3 は cobbler-web が現状利用できないのでご注意下さい。
新しい ISO に対応するために、sigunature を更新しておきます。
# cobbler signature update
task started: 2021-01-24_015444_sigupdate
task started (id=Updating Signatures, time=Sun Jan 24 01:54:44 2021)
running python triggers from /var/lib/cobbler/triggers/task/sigupdate/pre/*
running shell triggers from /var/lib/cobbler/triggers/task/sigupdate/pre/*
shell triggers finished successfully
Successfully got file from https://cobbler.github.io/signatures/3.0.x/latest.json
*** TASK COMPLETE ***次に、PXE に必要なブートローダーをインストールします。
cobbler get-loaders
詳細は、2021/01/24 公開ブログ記事に記載していますが、HTTP の reposync が正常に走るように、「reposync_flags: "-n --delete"」の設定を入れておきます。
cobbler で使用するポートを許可します。
firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent
firewall-cmd --add-service=tftp --permanent
systemctl reload firewalld
CentOS Stream 8 のインポートを行います。
CentOS Stream の都合上、軽量な boot iso を読み込ませます。
cobbler import 時の name の途中に x86_64 があっても、最後に付くようになるので、それを考慮した命名にしておきます。mkdir /mnt/iso
mount /dev/cdrom /mnt/iso
cobbler import --name CentOS-Stream-8-20210120-boot-x86_64 --path /mnt/iso --breed redhat --os-version rhel8boot iso の sigunature はないのでエラーが出ます。
running python triggers from /var/lib/cobbler/triggers/task/import/pre/*
running shell triggers from /var/lib/cobbler/triggers/task/import/pre/*
shell triggers finished successfully
No signature matched in /var/www/cobbler/distro_mirror/CentOS-Stream-8-20210120-boot-x86_64
Exception occured:
Exception value: 'No signature matched in /var/www/cobbler/distro_mirror/CentOS-Stream-8-20210120-boot-x86_64'
Exception Info:
File "/usr/lib/python3.6/site-packages/cobbler/remote.py", line 98, in run
rc = self._run(self)
File "/usr/lib/python3.6/site-packages/cobbler/remote.py", line 305, in runner
self.logger
File "/usr/lib/python3.6/site-packages/cobbler/api.py", line 1489, in import_tree
import_module.run(path, mirror_name, network_root, autoinstall_file, arch, breed, os_version)
File "/usr/lib/python3.6/site-packages/cobbler/modules/managers/import_signatures.py", line 186, in run
raise CX(error_msg)
!!! TASK FAILED !!!コピーは完了しているので、次の手順に進みます。
cobbler distro add --name CentOS-Stream-8-20210120-boot-x86_64 --arch x86_64 --breed redhat --initrd /var/www/cobbler/distro_mirror/CentOS-Stream-8-20210120-boot-x86_64/images/pxeboot/initrd.img --kernel /var/www/cobbler/distro_mirror/CentOS-Stream-8-20210120-boot-x86_64/images/pxeboot/vmlinuz --os-version rhel8 --autoinstall-meta "tree=http://@@http_server@@/cblr/links/CentOS-Stream-8-20210120-boot-x86_64" --boot-loader grub
rsync の場合、古いパッケージもミラーするため 50GB 以上必要になります。http を利用することで ISO ファイル相当の 11GB 程度まで容量を削減できます。
cobbler repo add --name="CentOS-Stream-8-BaseOS-x86_64" --mirror=rsync://ftp.iij.ad.jp/centos/8-stream/BaseOS/x86_64/os/
cobbler repo add --name="CentOS-Stream-8-BaseOS-x86_64" --mirror=http://ftp.iij.ad.jp/pub/linux/centos/8-stream/AppStream/x86_64/os/
cobbler reposync --only CentOS-Stream-8-BaseOS-x86_64
cobbler repo add --name="CentOS-Stream-8-AppStream-x86_64" --mirror=rsync://ftp.iij.ad.jp/centos/8-stream/AppStream/x86_64/os/
cobbler repo add --name="CentOS-Stream-8-AppStream-x86_64" --mirror=http://ftp.iij.ad.jp/pub/linux/centos/8-stream/AppStream/x86_64/os/
cobbler reposync --only CentOS-Stream-8-AppStream-x86_64boot イメージは BaseOS を含んでいないので、リンクを張ります。
ln -s /var/www/cobbler/repo_mirror/CentOS-Stream-8-BaseOS-x86_64/repodata /var/www/cobbler/distro_mirror/CentOS-Stream-8-20210120-boot-x86_64/repodata
ln -s /var/www/cobbler/repo_mirror/CentOS-Stream-8-BaseOS-x86_64/Packages /var/www/cobbler/distro_mirror/CentOS-Stream-8-20210120-boot-x86_64/Packages
cobbler import
Oracle Linux ISOs のページより、OracleLinux-R8-U3-x86_64-dvd.iso をダウンロードします。
mount /dev/cdrom /mnt/iso
cobbler import --name Oracle-Linux-8.3-x86_64 --path /mnt/iso --breed redhat --os-version rhel8cobbler repo
下記コマンドを実行します。
cobbler repo add --name="Oracle-Linux-8.7-BaseOS-x86_64" --mirror=http://yum.oracle.com/repo/OracleLinux/OL8/baseos/latest/x86_64/
cobbler reposync --only Oracle-Linux-8.7-BaseOS-x86_64
cobbler repo add --name="Oracle-Linux-8.7-AppStream-x86_64" --mirror=http://yum.oracle.com/repo/OracleLinux/OL8/appstream/x86_64/
cobbler reposync --only Oracle-Linux-8.7-AppStream-x86_64
cobbler repo add --name="Oracle-Linux-8-UEKR6-x86_64" --mirror=http://yum.oracle.com/repo/OracleLinux/OL8/UEKR6/x86_64/
cobbler reposync --only Oracle-Linux-8-UEKR6-x86_64
CentOS Stream 9 のインポートを行います。
CentOS Stream 8 では boot を使いましたが、2022/1 時点で 9 の日本のミラーサイトがないので、DVD をインポートします。
cobbler import 時の name の途中に x86_64 があっても、最後に付くようになるので、それを考慮した命名にしておきます。mkdir /mnt/iso
mount /dev/cdrom /mnt/iso
cobbler import --name CentOS-Stream-9-20220425-dvd1-x86_64 --path /mnt/iso --breed redhat --os-version rhel9boot iso の sigunature はないのでエラーが出ます。
Copyright (C) 2004-2022, oyasu.infolegacy の方の ISO を使用します。