WIMの効果的な作成と使用-Chocolatey Magic

挑戦する





私の仕事では、Windows Imageイメージ-有名なWIMファイルを使用します。 今日共有したいアプローチは、ソフトウェアとサービスの完全なセットでユニバーサルイメージを作成することとは正反対です。 「太い-太い」アプローチとの主な違いは、少なくとも最小限のものが含まれていることです-パペットエージェントを実行し、必要なソフトウェアをさらにインストールするために必要なものだけです。 ソフトウェアをインストールするには、chocolateyを使用します。すべてのパッケージはchocolatey.orgから取得され、カスタムパッケージの場合はデータセンターのサーバーにリポジトリがあります)。 サーバー構成の要件に応じて、他のすべては後で設定されます。 私の意見では、これにより柔軟性が大幅に向上し、実際に必要なのは、サービスパックと大きな更新を追加することだけです。 そして今日はちょうどその日です:「画像を更新する時間です」。 具体的には、今日、特定のISOshnikからWindows Server 2012 Standardのイメージをゼロから作成する必要があります。



難しさ



それ自体に問題はありません。私にとって重要なことは、1年で私(または私の管理者の1人)が自分自身を開き、短いREADMEを読んですべてを理解できるように、すべてがシンプルでなければならないことです。



実装



WDSが配置されている同じサーバー上に、Hyper-Vの役割が追加されます。この役割には、このために特別に設計されたいくつかの仮想マシンがあります。 この場合、「bare」バージョンのServer 2012 Standardが存在する「server-2012-std-img」という名前の仮想マシン。 仮想マシンからイメージをキャプチャするのははるかに簡単です。 Windowsを使用してvhdをマウントし、マウントされたディスクから直接wimをキャプチャできます。 このアプローチでは、実サーバーを再起動する必要はありません。



画像のカスタマイズ


更新を行います。 イメージの更新をインストールするには、wuinstall試用版を使用します。 再度ダウンロードする必要があるたびに( link )、なぜなら トライアル用語は、どうやらexeファイルに配線されています。 考えを声に出して:wuinstallのチョコレートのパッケージを作成する必要があり、更新プログラムのインストールを自動化して、オフィスの管理者にプレゼントを提供することが可能になります...



それを行うには複数の方法があります


wsusofflineからダウンロードしたオフラインアップデートを使用して、いわゆる「オフラインイメージメンテナンス」を実行できることは知っていますが、私の状況では、Server 2008(R2ではなく)サーバーが存在するため、これはまず適していません。最悪の側面)パッケージ管理およびオフラインサービス機能に関するR2および2012から。 そして、可能な限りプロセスの統合が好きなので、wsusofflineでそれを行います。 さらに、サービスパックの統合は多くの場合、オフラインサービスでは機能しません。 おそらく、MicrosoftがWIMまたはISO配布ファイルを最新の更新と共に保存する場所を誰かが知っているのでしょうか?

ところで、システムイメージ自体にはドライバーを含めません。 それらは、una​​ttend.xml構成で指定されているネットワークフォルダーから取得され、フォルダーはWindowsインストーラーがアクセスできる場所にあります。 ドライバーフォルダーへのアクセス権を確認することを忘れないでください(もちろん、使用可能なinfファイルで解凍する必要があります)。



unattend.xmlでドライバーへのパスを指定します
<settings pass="offlineServicing"> <component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <DriverPaths> <PathAndCredentials wcm:action="add" wcm:keyValue="1"> <Credentials> <Domain>mydomain</Domain> <Password>wds-password</Password> <Username>wds-user</Username> </Credentials> <Path>\\wds-server.mydomain.local\REMINST\Drivers</Path> </PathAndCredentials> </DriverPaths> </component> </settings>
      
      







チョコレートのインストールは非常に簡単なプロセスです。主なことは、3.5フレームワークがあることを確認することです。



Chocolateyをインストールする
 @powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%systemdrive%\chocolatey\bin
      
      







以上で、画像のカスタマイズは終了です。 それを作成する時間です!



画像作成


画像を作成するプロセスを開始します
 ::Config file that contains some paths and date patterns call config.cmd SET mountdrive=H echo Creating image %captured_wims%\server-2012\server-2012x64.standard.sp2.%date%.%RANDOM%.install.wim utils\imagex\imagex.exe /capture %mountdrive%: %captured_wims%\server-2012x64.standard.sp2.%date%.%RANDOM%.install.wim " Windows Server 2012 SERVERSTANDARD"
      
      









すべての更新を含むServer 2012 Standardイメージを作成するプロセスは、仮想マシン上、ライブサーバー上で約20分かかりますが、もちろん高速ですが、それほど便利ではありません。 私はこれについてあまり心配していません、なぜなら ほとんどの場合、プロセスは計画されています。

イメージが作成された時間、短い時間、スクリプトはイメージを必要な場所に配置し、必要に応じて名前を付けました-今、それを取得してWDSサーバーに追加します。 できた!



今後は、新しいシステムの最初の起動時にpuppetエージェントをインストールする必要があり、これを新しいハードウェアに展開する必要があります。これは、puppetマニフェストを使用してサーバーを構成できるようにするために必要です。 これは手動で行うことができますが、自動的に行うことができます。



Puppet Agentをインストールする
 cinst puppet -ia "PUPPET_MASTER_SERVER=puppet.mydomain.local"
      
      





はい、はい、誰かがチョコレートに慣れていない場合は、この喜びを体験することを強くお勧めします。



この場合、 この puppetパッケージの最新バージョンがインストールされ、 puppet.mydomain.localサーバーに登録されます



puppetエージェントを自動的に登録する場合は、una​​ttend.xmlファイルに次を追加します
 <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <RunSynchronous> <RunSynchronousCommand wcm:action="add"> <Order>1</Order> <Description>Install Puppet</Description> <Path>cinst puppet -ia "PUPPET_MASTER_SERVER=puppet.mydomain.local"</Path> </RunSynchronousCommand> <RunSynchronousCommand wcm:action="add"> <Order>2</Order> <Description>Request Certificate</Description> <Path>("C:\Program Files (x86)\Puppet Labs\Puppet\bin\puppet_interactive.bat" --test) && echo OK</Path> </RunSynchronousCommand> <RunSynchronousCommand wcm:action="add"> <Order>3</Order> <Description>Stop Puppet Service</Description> <Path>(sc stop puppet) && echo Service Stop OK</Path> </RunSynchronousCommand> <RunSynchronousCommand wcm:action="add"> <Order>4</Order> <Description>Start Puppet Service</Description> <Path>(sc start puppet) && echo Service Start OK</Path> </RunSynchronousCommand> </RunSynchronous> </component>
      
      







おわりに



したがって、Chocolateyパッケージシステムは多くの個々の構成を置き換え、インストールの自動化を大幅に支援すると同時に、構成の柔軟性を提供します(chocolatey.orgをパッケージのソースとして使用する必要はありません)。 私の意見では、Windows Serverを展開するときにパッケージマネージャーを使用することは、インフラストラクチャをIaaCに移行するためのもう1つのステップであり、この状況ではThinイメージとThickイメージの選択が重要です。

私のネットワークでは、WindowsとLinuxは互いに密接に連携しているため、可能な限り両方のプラットフォームで機能するユニバーサルなOpenSourceソリューションを見つけようとしています。 SCCMはWindowsの準備、サポート、および展開に優れた製品であるという事実に異議を唱えませんが、Linux( 証拠 )を公式にサポートしていません-つまり、SCCMに支払ったお金については、統合を自分で把握する必要があります。 さらに、オープンソースは私たちの生活を改善します!



また、インフラストラクチャの不均一性の問題をどのように解決しますか ハブラー、あなたの意見を聞いてとてもうれしいです!



All Articles