4 Kickstartの使用によるインストールの自動化

Kickstart機能を使用すると、OSのインストールを自動化できます。Kickstartインストールでは、インストーラに特定のインストールの実装方法を指示する構成ファイルが使用されます。この機能には、次の利点があります。

  • インストール・プロセスの間にユーザーによる操作が不要です。

  • 複数のシステムへのインストールが容易になります。

  • この構成ファイルは、インストールしたシステムのブート時の問題のトラブルシューティングに役立ちます。

Kickstartを使用してOracle Linuxをローカルにインストールできます。ただし、この機能が最も役立つのは、ネットワーク経由で複数のシステムにOSをインストールする場合です。ネットワーク・インストールの場合、Kickstartの運用には次の構成要素があります。

  • Kickstart構成ファイル

  • 様々なクライアント・システムがそのクライアント固有の必要なインストールおよび構成ファイルにアクセスできるようにするための接続性の提供など、ネットワーク・インストールをサポートしている、構成済ネットワーク。

    ネットワーク・インストールの構成例は、ネットワーク・インストール設定の作成を参照してください。

Kickstart構成ファイルのカスタマイズ

Kickstart構成ファイルは、オプションおよびパラメータ定義の形式でのインストール指示からなります。

Kickstart構成ファイルを作成するには、次のいずれかの方法を選択します。

  • 既存のOracle Linuxシステムの/root/anaconda-ks.cfgファイルを使用します。

    Oracle Linuxインストールごとに、/root/anaconda-ks.cfgというファイルが作成されます。このファイルには、Oracle Linuxのインストール先でありKickstartで読み取リ可能なシステムに基づいた、構成定義が含まれています。したがって、このファイルは、そのままその他のインストールに使用することも、特定のターゲット・システムの各種インストールを自動化するためのテンプレートとして使用することもできます。

    テンプレートとして使用する場合は、このファイルの内容を、その他のOracle Linuxインストールに適用できるように修正する必要があります(特定のクライアントにどのOSバージョンをインストールするかなど)。

    システムにpykickstartパッケージが含まれている場合は、次のツールが、このファイルの内容を修正する際に役立ちます。

    • ksverdiffにより、削除済か非推奨のオプションを特定します。

    • ksvalidatorにより、ファイル内の構文が正しいことを確認します。

  • Oracle Linuxリリースを手動でインストールします。それにより、/root/anaconda-ks.cfgファイルが生成されます。このファイルを使用して、同じOracle Linuxリリースをその他のクライアントに自動的にインストールします。これらのクライアントへの指定内容によっては、このファイルの構成をいくらか調整する必要がある場合があります。

詳細は、https://pykickstart.readthedocs.io/en/latest/を参照してください。

この構成ファイルは、次の部分に分かれています。各部分には、次のようなオプション・グループが含まれています。

インストール・オプション

インストール・オプションにより、システム記憶域、キーボード定義、言語設定、ネットワーク情報などのパラメータを定義します。次の例で太字で示したオプション定義は、PXEでネットワーク・インタフェースを起動できるようにするためにあり、ネットワーク・インストールにおいて重要となります。

ノート:

UEKでサポートされているBtrfsファイル・システムを使用するには、Btrfsインストールの章の説明に従ってUEKインストール・メディアを使用していることを確認してください。その後、次の例で# Partition Informationの下に示すように、autopart Kickstartオプションにより、自動的に、Btrfsを使用してディスクをパーティション化できます。

ローカル・ミラー・リポジトリを使用している場合は、これらが最新であること、およびBtfrsが機能するために必要なUEKリポジトリがKickstart構成に含まれていることを確認してください。Oracle Linux yumサーバーを使用して必要なリポジトリをミラー化するか、Oracle Linux yumサーバーにアクセスできない場合は、完全インストールISOに含まれているリポジトリをミラー化できますが、UEKインストールISOを使用してインストーラを起動する必要があります。次の例では、システムがインターネットにアクセスできると想定され、公開されているOracle Linux yumサーバー・リポジトリが直接使用されます。

または、上流のドキュメント内の説明に従って、Btrfsを使用するように、手動でディスクをパーティション化します。

#platform=x86, AMD64, or Intel EM64T
#version=OL9
# Firewall configuration
firewall --enabled --service=ssh

# Use Oracle Linux yum server repositories as installation source
repo --name="ol9_AppStream" --baseurl="https://yum.oracle.com/repo/OracleLinux/OL9/appstream/x86_64/"
repo --name="ol9_UEKR7" --baseurl="https://yum.oracle.com/repo/OracleLinux/OL9/UEKR7/x86_64/"
url --url="https://yum.oracle.com/repo/OracleLinux/OL9/baseos/latest/x86_64"

# Root password
rootpw --iscrypted SHA512_password_hash

# Use graphical install
graphical
firstboot --disable

# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us'

# System language
lang en_US.UTF-8

# SELinux configuration
selinux --enforcing

# Installation logging level
logging --level=info

# System timezone
timezone  America/Los_Angeles

# Network information
network  --bootproto=dhcp --device=em1 --onboot=yes 
--hostname=hostname

# System bootloader configuration
bootloader --location=mbr --boot-drive=sda

# Non-administrative user
user --name=user --homedir=/home/user --password=SHA512_password_hash --iscrypted

# Partition information

clearpart --all --initlabel --drives=sda
autopart --type=btrfs

インストールするパッケージ

インストールするパッケージは、%packagesというグループ見出しの下に一覧表示されます。このリストは%endという行で終了します。

%packages
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-browser
@multimedia
@print-client
@print-server
@x11
mtools
pax
python-dmidecode
oddjob
wodim
sgpio
genisoimage
device-mapper-persistent-data
abrt-gui
samba-winbind
certmonger
openldap-clients
pam_krb5
krb5-workstation
ldapjdk
slapi-nis
libXmu
perl-DBD-SQLite
perl-Mozilla-LDAP
%end

このリストには、パッケージ・グループと個々のパッケージが含まれています。パッケージ・グループの名前には、個々のパッケージと区別するために@baseのように@という接頭辞が使用されています。

このファイルに含めるパッケージを特定するには、既存のOracle Linuxサーバーでdnf group listコマンドを使用します。このコマンドでは、インストール済のパッケージ・グループと、インストール可能なパッケージ・グループが両方とも表示されます。

複数のパッケージを指定するには、ワイルドカード文字(*)を使用します。パッケージをインストールから除外するには、パッケージ名に接頭辞として-文字を挿入します。

%packagesキーワードには、複数のオプションを指定できます。たとえば、次のオプションが便利です。

--ignoremissing

使用可能なパッケージを、不足パッケージに関するプロンプトを表示せずにインストールします。このオプションを指定しなかった場合、Kickstartによりインストールが中断され、インストールを続行するか取り消すかを尋ねるプロンプトが表示されます。

--multilib

32ビットのパッケージをシステムにインストールできるように、dnf構成のmultilibポリシーをallに設定します。

パッケージをこの構成ファイルに直接リストするかわりに、これらの名前を1つのファイルにまとめ、アクセス可能な場所にそれを格納できます。たとえば、ローカルでKickstartのRAMディスク・ファイル・システムに、またはHTTPサーバーかNFS共有に格納できます。その後、構成ファイルにおいて、%include文でそのリストへのフルパスを指定します。次に例を示します。

%packages --ignoremissing
%include /tmp/package-list
%end

インストール前オプション

インストール前オプションにより、インストール・プロセスの開始前にインストーラで実行する必要がある操作を定義します。このオプション・グループの構成は任意です。これらのオプションは%pre見出しの下にあり、%end行で終了します。

次の例では、インストーラに、HTTPサーバーに格納されているスクリプトconfig-partitionsを実行するように指示しています。さらに、インストーラで、%packagesセクションにある%include /tmp/package-list文で使用するためにWebサーバーからパッケージのリストをダウンロードする必要があります。

%pre
%include http://192.168.1.100/scripts/config-partitions
wget -q -O- http://192.168.1.100/scripts/package-list > /tmp/package-list
%end

この例では、wgetコマンドがパッケージ・リストをKickstartのファイル・システムに保存します。このシステムはメモリー内にramdiskとして存在します。

インクルードされたスクリプトまたはファイルは、指定されたパスまたはURLでアクセス可能である必要があります。ホストの特定に使用できるネーム・サービスがない場合は、IPアドレスを使用します。

インストール後オプション

インストール後オプションにより、インストールの最後にインストーラによって実行されるアクションを定義します。このオプション・グループの構成は任意です。

これらのオプションは%post見出しの下にあり、%end行で終了します。

Oracle Linux 9以降、rootアカウントはデフォルトでロックされています。システムへのSSH rootログインを有効にする場合は、次の行をKickstartファイルに追加します。

%post
echo "PermitRootLogin yes" > /etc/ssh/sshd_config.d/01-permitrootlogin.conf
%end

デフォルトでは、Kickstartにより、新しくインストールされたシステムのルート・ファイル・システムに基づくchroot環境でインストール後タスクが実行されます。chroot環境外のファイルにアクセスする必要がある場合は、%post行に--nochrootオプションを指定します。これで、/mnt/sysimageにマウントされている新しくインストールされたシステムのrootファイル・システムでKickstartファイル・システム内のファイルにアクセスできます。

次の例では、スクリプト/tmp/post-configがインストールの最後に実行されます。

%post --nochroot
%include /tmp/post-config
%end

インストールされたシステムのネットワーク・インタフェースを、DHCPを使用してその設定を取得するように構成する場合、ドメイン名のかわりにIPアドレスを使用するか一時resolv.confファイルを設定する必要があります。たとえば:

%post
wget -q -O- http://192.168.1.100/scripts/resolv.conf > /etc/resolv.conf
%include http://instsvr.mydom.com/scripts/post-config
.
.
.
%end

Kickstartインストールの開始

Kickstartインストールを開始するには、次の準備が完了していることを確認します。

  • ローカルのCD-ROMドライブまたはUSBドライブにある、完全インストール・メディアへのアクセス。メディア準備に関する説明を参照してください。

  • Kickstart構成ファイルへのアクセス。

ネットワーク経由のインストール

  1. システムをブートします。
  2. ブート・シーケンスの間に、システムのBIOSにアクセスします。
  3. BIOS画面で、システム設定を、ネットワークからブートするように変更します。
  4. 変更内容を保存し、ブート・プロセスを続行します。
  5. ブート・メニューが表示されたら、インストール・オプションを選択してから、[E] (UEFIベースのシステム)または[Tab] (BIOSベースのシステム)を押してブート・プロンプトにアクセスします。
  6. ネットワーク内のKickstartファイルの場所を追加します。この場所により、ネットワーク・サーバーのプロトコル、およびFQDNまたはIPアドレスを指定する必要があります。たとえば、NFSサーバーを使用している場合は、次の行を入力します。
    nfs:options:fqdn/path-to-file
    この構成ファイルのネットワーク位置を特定するためのその他の例は、インストール・ソースを参照してください。

    ノート:

    ネットワークからのインストールのもう1つの方法は、ブート・サーバーの使用です。このシナリオでは、システムをオンにするとインストールが自動的に開始されます。ネットワーク・インストール設定の作成を参照してください。
  7. ブート構成の修正内容を保存し、ブート・プロセスを続行します。

    ブート・プロセスが終わると、すぐにインストールが続行されます。

ローカルでのインストール

  1. システムをローカルのブート・メディアからブートします。

  2. ブート・メニューが表示されたら、インストール・オプションを選択してから、[E] (UEFIベースのシステム)または[Tab] (BIOSベースのシステム)を押してブート・プロンプトにアクセスします。

  3. Kickstartファイルの場所を特定する適切なオプションを追加します。次に例を示します。
    inst.ks=cdrom:/dev/sbd1/tmp/ks.cfg

    ブート・オプションの詳細は、ブート・ローダーの動作のカスタマイズを参照してください。

  4. ブート構成の修正内容を保存し、ブート・プロセスを続行します。

    ブート・プロセスが終わると、すぐにインストールが続行されます。