私は、ある環境で 40 台の固定インストール端末 (タッチ スクリーン付き、マウスやキーボードは接続されていない) にサービスを提供しています。これらの 40 台の PC にはすべて、フルスクリーン モードで Web アプリケーションを提供することが唯一の目的であるため、Ubuntu と Chromium のスリム バージョンがインストールされています。
さて、問題は次の通りです。数日前、停電が発生し、すべての端末がシャットダウンしました。すべてを再起動したところ、タッチスクリーンが 1 つも機能しませんでした。原因はわかりません。ただし、CloneZilla フラッシュ ドライブを使用してシステムを再インストールすると、問題は解決しました。キーボードとフラッシュ ドライブを接続し、フラッシュ ドライブから起動するように BIOS 設定を変更し、40 台の端末すべてを再インストールするなど、かなりの作業が必要でした。
これをもっと良い方法で行うにはどうすればよいでしょうか。私の理想のシナリオは、1 つの変更を展開することです (たとえば、すべての端末に小さな NodeJs サーバーを配置したり、SSH アクセスを構成したりします)。PXE サーバーの実行を検討しましたが、どうやら非常に時間がかかります (800 MB のイメージ x 40 のダウンロードにかなりの時間がかかります)。
この設定をより良い方法で維持するためのより良い解決策を持っている人はいますか?
答え1
まあ、PXE は、起動時に各サーバーにイメージをダウンロードするケースである必要はありません。実際、PXE のより伝統的な使用法は (少なくとも UNIX システムを扱う場合)、NFS (または最近では他のネットワーク ファイル システム) にルート ファイル システムがあるシステムにディスクレス ブートを提供することでした。それがどの程度うまく機能するかはよくわかりませんが (PXE の時間の問題を NFS サーバーの単一障害点と交換します)、検討する価値はあるかもしれません。iSCSI または NBD でも同様のことを行うことができますが、セットアップが少し複雑になります。
同様に、チェーンロードの可能性も検討してみてください。システムレスキューCDネットブートの場合、TFTP 経由で syslinux、カーネル、および初期 RAM ディスクをロードするだけでよく、その後、別のプロトコル経由で実際のシステム イメージをロードできます (たとえば、私が働いている場所では、HTTP 経由でロードします)。TFTP はひどく非効率的なプロトコルです (次のブロックを送信する前に各ブロックを個別に確認する必要があり、デフォルトで非常に小さなブロック サイズを使用します)。そのため、これを行うとプロセスが大幅に高速化されます (私の職場のネットワークでは、SystemRescueCD をネットブートし、TFTP ではなく HTTP 経由でシステム イメージをロードするように設定しています。これにより、セットアップ時にテストしたシステムでは、ブート時間がほぼ 15 分から約 3 分に短縮されました)。
Ubuntuベースのものを実行している場合は、次の組み合わせを使用することを検討してください。マースそしてジュジュUbuntu でこの種のことを実行するにはこれが標準スタックだからです。
しかし、それ以上に、今回のような大規模な停止はまれであると確信できる場合(したがって、40のシステムすべてを再び一度に再インストールする必要はなさそう)、自動管理ツールを検討してもよいでしょう。システムのインストールには役立ちませんが、システムの構成やパッケージの変更の展開を大幅に簡素化できます。私は特に、アンシブルこの種の用途では、セットアップが非常に簡単であること (文字通り、パスワード不要の SSH ログインと、管理対象のシステムにインストールされた特定の Python パッケージ 1 つだけが必要) と、ステートフルな (主に) 宣言型言語を使用してタスクを処理するため、習得が非常に簡単であることが主な理由です。傀儡、シェフ、 そして塩これらは、このタイプのものとしては他の 3 つの一般的なオプションですが、私はざっとした評価以外には個人的な経験がないので、どれがあなたの用途に最適であるかについてのアドバイスはできません。
答え2
ディスクレス PXE ブートもお勧めしますが、この状況では、別の方法として、1 つのシステムを簡単にバックアップして、それを 40 個すべてに復元することもできます。その方が、40 回再インストールするよりも高速です。