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 を自分のアドレスに置き換えてください)
- http://hostname.localdomain/fedora31
- http://hostname.localdomain/centos7
- http://hostname.localdomain/centos8
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