Cobbler を使用して自動インストール環境を作る(CentOS Stream 9)

トップページ > パソコン備忘録 > Cobbler

令和6年4月29日公開 令和6年4月29日更新

はじめに

Cobbler」で自宅の OS インストールを自動化した際のメモです。
技術系の記事は基本的にブログにて公開していますが、これは随時情報を追記したりするので、ホームページの方で紹介します。

環境

インストール

CentOS Stream 9 で確認します。epel をインストール後、cobbler をインストールします。

dnf install epel-release
dnf module enable cobbler
dnf install cobbler3.2 cobbler3.2-web python-django3 python3-librepo

にてインストールします。
cobbler 3.3 以上は cobbler-web が標準で利用できないため、あえて cobbler 3.2 をインストールしています。
全て cobbler コマンドのみで操作する場合は、3.3 で良いかと思います。
Django 4 系だと cobbler-web が正常に動作しないため、3系をインストールします。

インストールが終わったら、Enable しておきます。

systemctl enable cobblerd
systemctl enable tftp

cobbler の初期設定

新しい ISO に対応するために、sigunature を更新しておきます。

# cobbler signature update
task started: 2024-04-29_013726_sigupdate
task started (id=Updating Signatures, time=Mon Apr 29 01:37:26 2024)
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"」の設定を入れておきます。

ファイアウォール(Firewalld)の設定

cobbler で使用するポートを許可します。

firewall-cmd --add-service http --permanent
firewall-cmd --add-service https --permanent
firewall-cmd --add-service tftp --permanent
systemctl reload firewalld

CentOS Stream 9 cobbler import

CentOS Stream 9 のインポートを行います。
CentOS Stream の都合上、軽量な boot iso を読み込ませます。
cobbler import 時の name の途中に x86_64 があっても、最後に付くようになるので、それを考慮した命名にしておきます。

mkdir /mnt/iso
mount /dev/cdrom /mnt/iso
cobbler import --name CentOS-Stream-9-20240429-boot-x86_64 --path /mnt/iso --breed redhat --os-version rhel9

boot 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-9-20240429-boot-x86_64
Exception occurred: <class 'cobbler.cexceptions.CX'>
Exception value: 'No signature matched in /var/www/cobbler/distro_mirror/CentOS-Stream-9-20240429-boot-x86_64'
Exception Info:
File "/usr/lib/python3.9/site-packages/cobbler/remote.py", line 98, in run
rc = self._run(self)

File "/usr/lib/python3.9/site-packages/cobbler/remote.py", line 277, in runner
self.remote.api.import_tree(

File "/usr/lib/python3.9/site-packages/cobbler/api.py", line 1476, in import_tree
import_module.run(path, mirror_name, network_root, autoinstall_file, arch, breed, os_version)

File "/usr/lib/python3.9/site-packages/cobbler/modules/managers/import_signatures.py", line 195, in run
raise CX(error_msg)

!!! TASK FAILED !!!

コピーは完了しているので、次の手順に進みます。

cobbler distro add --name CentOS-Stream-9-20240429-boot-x86_64 --arch x86_64 --breed redhat --initrd /var/www/cobbler/distro_mirror/CentOS-Stream-9-20240429-boot-x86_64/images/pxeboot/initrd.img --kernel /var/www/cobbler/distro_mirror/CentOS-Stream-9-20240429-boot-x86_64/images/pxeboot/vmlinuz --os-version rhel9 --autoinstall-meta "tree=http://@@http_server@@/cblr/links/CentOS-Stream-9-20240429-boot-x86_64" --boot-loader grub

CentOS Stream 8 cobbler repo

rsync の場合、古いパッケージもミラーするため多くの容量が必要になります。http を利用することで ISO ファイル相当の 11GB 程度まで容量を削減できます。

cobbler repo add --name="CentOS-Stream-9-BaseOS-x86_64" --mirror=http://ftp.iij.ad.jp/pub/linux/centos-stream/9-stream/BaseOS/x86_64/os/
cobbler reposync --only CentOS-Stream-9-BaseOS-x86_64
cobbler repo add --name="CentOS-Stream-9-AppStream-x86_64" --mirror=http://ftp.iij.ad.jp/pub/linux/centos-stream/9-stream/AppStream/x86_64/os/
cobbler reposync --only CentOS-Stream-9-AppStream-x86_64

boot イメージは 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

CentOS Stream 8 cobbler import

CentOS Stream 8 のインポートを行います。
CentOS Stream 9 と同じです

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 rhel8

boot 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

CentOS Stream 8 cobbler repo

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_64

boot イメージは 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

Oracle Linux 8.3

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 rhel8

cobbler 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

Ubuntu 20.04

legacy の方の ISO を使用します。