mariuszczyz.centos_pxe

CentOS 7/8 と Fedora の PXE ブートによる自動 OS インストールと設定

このロールは、CentOS 7、CentOS 8、Fedora 31 などの自動インストールを行うためのローカル PXE ブート環境の基本設定を行います。

以下の内容をインストールし、設定します:

インストール ISO とローカル RPM リポジトリ - インストール用 ISO がローカルに存在しない場合、ダウンロードしてマウントします。マウント後、その内容を使ってインストールプロセスで使用されるローカル RPM ミラーを生成します。このミラーは、後で追加の RPM パッケージのインストールにも使用できます。

TFTP サーバー & PXE - ネットワーククライアントが PXE で起動できるようにするために必要です。

このロールは、以下のサービスを事前設定します:

  • ローカルドライブからブートする。何もインストールしない
  • グラフィカル GUI で Fedora 31 を手動インストール
  • グラフィカル GUI で CentOS 7 を手動インストール
  • グラフィカル GUI で CentOS 8 を手動インストール
  • テキストモードでの基本的な自動 Fedora 31 Kickstart インストール
  • テキストモードでの基本的な自動 CentOS 7 Kickstart インストール
  • テキストモードでの基本的な自動 CentOS 8 Kickstart インストール

また、リモート PXE クライアントが適切に起動するために必要なカーネルイメージもすべてインストールします。

Apache Web サーバー - 最小限の事前設定で、すべての RPM パッケージのローカルアクセス可能なディレクトリリストを生成するために使用されます。

ローカルミラーは、公開されているミラーと同じディレクトリ構造を模倣します。

以下のアドレスでローカルにアクセスできます: (hostname.localdomain を自分のアドレスに置き換えてください)

Kickstart ファイル - このロールは、CentOS7/8 & Fedora 31 の自動インストール Anaconda Kickstart ファイルをテンプレートから展開します。これらはウェブサーバーのルートディレクトリ内の kickstart ディレクトリに配置され、すべてのクライアントからアクセス可能です。

追加の注意点

VirtualBox や KVM で新しい VM を構築する際は、ゲストに最低 2 GB の RAM を割り当ててください。これより少ない場合、CentOS のインストールプロセスは失敗する可能性が高いです。インストールが成功した後は、RAM の量は減らすことができます。

エンドユーザーは、Kickstart の設定テンプレートを確認し、カスタマイズすることをお勧めします。現在の形では非常に基本的なものです。すべての設定は以下を前提としています:

  • 自動パーティショニング(LVM 使用)
  • SELinux 無効
  • ファイアウォール無効
  • 最小限のソフトウェア選択
  • root ログイン許可
  • 非 root 管理ユーザー 1 名
  • DHCP クライアントのネットワーク設定

Anaconda と Kickstart インストールで可能な限り少ない作業を行うアイデアは、インストール後の設定カスタマイズに頼ることです。

要件

Apache

Kickstart プロセスがローカルでインストールパッケージにアクセスできるように、Apache Web サーバーの標準インストールが必要です。

以下のようなシンプルな Apache ロールを Galaxy からインストールできます:

ansible-galaxy install mariuszczyz.centos_apache

DHCPd

動作するローカル DHCP サービス。

また、PXE ブートサーバーで専用の DHCP をこのロールを使って設定することもできます:CentOS & Fedora DHCP サーバーのインストールと構成 Ansible ロール

オペレーティングシステムのインストール ISO イメージ

このロールは、オペレーティングシステムインストールの ISO イメージが /isos/ にあることを前提としています。そのままにするか、defaults/main.yml で変更してください。ただし、ISO イメージはこのロールを実行する前にダウンロードされている必要があります。そうしないと、必要なファイルにアクセスできず、プレブート環境を適切に設定することができません。ISO のダウンロードタスクは、このロールには意図的に含まれていません。

Kickstart ファイル

Kickstart インストールファイルが動作するために必要な最小限の変更:

rootpw --iscrypted PASSWORD_HASH - root パスワードハッシュ

Kickstart のルートパスワードハッシュの作成方法

CLI でこのコマンドを実行します:openssl passwd -6

使用可能なアルゴリズムのオプション:

 -6                  SHA512 ベースのパスワードアルゴリズム
 -5                  SHA256 ベースのパスワードアルゴリズム
 -apr1               MD5 ベースのパスワードアルゴリズム(Apache 変種)
 -1                  MD5 ベースのパスワードアルゴリズム
 -aixmd5             AIX MD5 ベースのパスワードアルゴリズム
 -crypt              標準 Unix パスワードアルゴリズム(デフォルト)

パスワードをプロンプトで要求され、ハッシュが出力されます:

注:以下は実際のパスワードではありません

Password:
Verifying - Password:
$6$gdGbs42fZoKUVwQH$eY2nId.oONxK9MneuM58Vg2NPEuftngWmwfK09YW4DQLs3Hcq5F5HEohDEcM.Ci3p8gQrVuygTfScim7MY6QI1

その他の設定は、パーティショニング、タイムゾーン、追加パッケージなど、必要に応じてカスタマイズします。

ロール変数

変数 コメント
ISOS_PATH ISO インストールイメージがローカルに保存されるディレクトリ /isos
NAME オペレーティングシステム名 fedora31
ISO_LOCATION ISO イメージのフルパス /isos/CentOS-7-x86_64-Everything-1908.iso
MOUNT_POINT ISO イメージをローカルファイルシステムにマウントするフルパス /var/www/centos7
KICKSTART_HASHED_ROOT_PASSWORD Kickstart 用のハッシュ化された root パスワード。 "pwkickstart" または "openssl passwd -6" を使って生成 bEzYf1S49$yu
NON_ROOT_USER_NAME 新しいシステムに作成する非 root 管理ユーザーアカウント mariusz
NON_ROOT_USER_PASSWORD Kickstart 用のハッシュ化されたユーザーパスワード。 "pwkickstart" または "openssl passwd -6" を使って生成 bEzYf1S49$yu
TIMEZONE ローカルタイムゾーン America/Chicago
NTP_SERVERS ネットワークタイムサーバー。ローカルまたはパブリック。 ntp.localdomain
FEDORA_HOSTNAME 新しい Fedora サーバーのデフォルトホスト名 fedora31.localdomain
FEDORA_NETWORK_INSTALLATION_URL Anaconda が Fedora パッケージを取得する場所 http://mirror.steadfastnet.com/fedora/releases/31/Everything/x86_64/os/
CENTOS7_HOSTNAME 新しい Fedora サーバーのデフォルトホスト名 centos7.localdomain
CENTOS7_NETWORK_INSTALLATION_URL Anaconda が CentOS パッケージを取得する場所 http://192.168.1.109/centos7
CENTOS8_HOSTNAME 新しい Fedora サーバーのデフォルトホスト名 centos8.localdomain
CENTOS8_BASE_OS_URL CentOS 8 BaseOS パッケージリポジトリ URL http://mirror.steadfastnet.com/centos/8/BaseOS/x86_64/os/
CENTOS8_APPSTREAM_REPO_URL CentOS 8 AppStream パッケージリポジトリ URL http://mirror.steadfastnet.com/centos/8/AppStream/x86_64/kickstart/

依存関係

mariuszczyz.centos_apache mariuszczyz.centos_dhcpd

Ansible Galaxy から依存関係を requirements.yml を使用してインストールします。

# Ansible Galaxy からインストール
- src: mariuszczyz.centos_apache
- src: mariuszczyz.centos_dhcpd

使用例プレイブック

手動

Ansible Galaxy から手動でこのロールを取得します:

ansible-galaxy install mariuszczyz.centos_pxe

手動でない

Galaxy

または requirements.yml を介して Ansible Galaxy からこのロールを含めます。

# requirements.yml
# Ansible Galaxy からインストール
- src: mariuszczyz.centos_pxe

Github オプション

# requirements.yml
# Github リポジトリからインストール
- src: https://www.github.com/mariuszczyz/centos_pxe

次に、Ansible Galaxy からすべての依存関係をインストールするために実行します:

ansible-galaxy install -r requirements.yml

実行

このロールを個別に実行したい場合は、新しいファイル playbook.yml (好きな名前で)を作成して、以下の内容を記述します:

- hosts: servers
  user: YOUR USER
  become: True

  roles:
    - { role: mariuszczyz.centos_pxe, tags: ['centos_pxe'] }

実行します:

ansible-playbook -i hosts playbook.yml

ライセンス

BSD

著者情報

著者:Mariusz Czyz
日付:2019年12月
mariuszczyz.com

プロジェクトについて

CentOS 7/8 and Fedora PXE Boot Server Role

インストール
ansible-galaxy install mariuszczyz.centos_pxe
ライセンス
Unknown
ダウンロード
117
所有者