Packer で Windows マシンビルドを作成する

Packer で Windows マシンビルドを作成する

投稿者: Dan Franciscus
投稿日: 2018年12月7 0 Comments

Packer は、Linux だけでなく Windows もサポートしていますが、OSイメージの作成方法は両者で大きく異なります。このブログでは、Packer で Windows OS イメージを作成する方法を説明します。

前のブログに書いたように、Packerは、Hashicorp が提供するオープンソースのオペレーティングシステム・イメージ構築ツールです。 Packerの優れた特徴は、1つの設定から複数のプラットフォーム(AWS、Azure、VMwareなど)用に異なるアーティファクトを作成できる点です。Packer は Linux イメージと Windows イメージの両方の作成をサポートしており、単一の方法でイメージ構築が可能です。

参考リソース

新しい技術を学ぶとき、他の人がどのように使っているかの例を見るのは非常に参考になります。Packer を Windows で使用するのに参考になる最良のリソースは、Joe Fitzgerald 氏の GitHub リポジトリとそのフォークである Stefan Scherer 氏の Github リポジトリです。これら2つのリポジトリにある例を見ると、ツールを組み合わせて Windows ビルドを自動化する方法がよくわかります。Scherer 氏の Windows 10 用の Packer テンプレートを使って、Packer で Windows ビルドを作成する方法を説明します。

autounattend ファイル

Windows OS インストールを自動化するのに最も重要なのは、おそらく autounattend.xml ファイルでしょう。これは Packer だけに限定されるものではなく、Windows のインストール自動化のために誰でも使えるファイルです。Windows OS インストールディスクを起動すると、デフォルトで、インストールするディスクなどのインストール・オプションを選択するようプロンプト指示されますが、これらのオプションはすべて autounattend.xml ファイルで設定できます。このファイルは、リムーバブルドライブに配置する必要があります。Packerでこれを行うには、フロッピードライブ経由で仮想マシンにマウントします。次は Packer テンプレートのビルダー部分の例です。

"builders": [

    {

      "boot_wait": "6m",

      "communicator": "winrm",

      "cpu": "2",

      "disk_size": "",

      "floppy_files": [

        "./answer_files/autounattend.xml",

        "./floppy/WindowsPowershell.lnk",

        "./floppy/PinTo10.exe",

        "./scripts/fixnetwork.ps1",

        "./scripts/disable-screensaver.ps1",

        "./scripts/disable-winrm.ps1",

        "./scripts/enable-winrm.ps1",

        "./scripts/microsoft-updates.bat",

        "./scripts/win-updates.ps1"

      ],

      "guest_additions_mode": "none",

      "iso_checksum": "",

      "iso_checksum_type": "",

      "iso_url": "",

      "ram_size": "2048",

      "shutdown_command": "shutdown /s /t 10 /f /d p:4:1 /c \"Packer Shutdown\"",

      "switch_name": "",

      "type": "hyperv-iso",

      "vm_name": "windows_10",

      "winrm_password": "vagrant",

      "winrm_timeout": "",

      "winrm_username": "vagrant"

    }

フロッピーファイルのセクションで、ローカル・ファイル /answer_files/autounattend.xml をコピーしてマウントするよう設定しています。OSインストール時の Windows のプロンプトに自動応答するためのさまざまな設定を、autounattend.xml の内部に記述しておくことができます。たとえば、自動ログオンアカウントに、ユーザー名とパスワード、”vagrant” を設定しているのがわかると思います。



     

          vagrant

          true&lt;/plaintext&gt;&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;/password&gt;&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;username&gt;vagrant&lt;/username&gt;&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;enabled&gt;true&lt;/enabled&gt;&lt;br&gt;&lt;br&gt;&nbsp;&lt;/autologon&gt;&lt;/pre&gt; &lt;p&gt;また、&lt;strong&gt;autounattend.xml&lt;/strong&gt; には、Windows OS のインストール後の最初のログオン時に実行するコマンドのセクションもあります。バッチスクリプトと PowerShell スクリプトの両方がサポートされており、様々な設定が可能です。上のビルダーの例では、Windows のアップデートをVMにインストールする &lt;strong&gt;win-updates.ps1&lt;/strong&gt; という PowerShell スクリプトが実行されるよう設定しています。&lt;/p&gt; &lt;p&gt;&lt;strong&gt;autounattend.xml&lt;/strong&gt; ファイルで様々な設定が可能なことは上述の通りですが、250ラインに及ぶ詳細なファイルは、&lt;a href="https://github.com/StefanScherer/packer-windows/blob/my/answer_files/10/Autounattend.xml" rel="noopener" target="_blank"&gt;ここ&lt;/a&gt;からアクセスできます。&lt;/p&gt; &lt;h2&gt;コミュニケーター&lt;/h2&gt; &lt;p&gt;Packer が VM と通信する一般的な方法は SSH です。OpenSSH を使用することも可能ですが、Windows&nbsp;でより一般的なリモート通信方法は WinRM です。先に示したPacker テンプレートのビルダー部分にあるように、Packer テンプレートで WinRM 接続して認証するよう設定できます。&lt;/p&gt; &lt;pre&gt;"winrm_password": "vagrant",&lt;br&gt;&lt;br&gt;"winrm_timeout": "",&lt;br&gt;&lt;br&gt;"winrm_username": "vagrant"&lt;/pre&gt; &lt;p&gt;Windows の場合、WinRM はデフォルトで、ドメイン外の2台のコンピュータ間でSSL暗号化を要求します。Packer のホストとビルドVM間の通信を可能にする最も簡単な方法(安全は保証されていないものの)は、暗号化されていないトラフィック(HTTP)を許可することです。それを行う Scherer 氏の&nbsp;Github スクリプトは、&lt;a href="https://github.com/StefanScherer/packer-windows/blob/my/scripts/enable-winrm.ps1" rel="noopener" target="_blank" data-sf-ec-immutable=""&gt;ここ&lt;/a&gt;からアクセスできます。&lt;/p&gt; &lt;h2&gt;ISOファイルの使用&lt;/h2&gt; &lt;p&gt;Windows イメージを作成する基本的な方法は、Windows&nbsp;インストールISOを使用することです。テストのためには、Microsoft のトライアルISOを使用することができます。または、組織での使用のために提供されるボリュームライセンスISOを使うこともできます。Packer テンプレートで、ISOファイル、チェックサム、チェックサムタイプの3つのフィールドを設定します(実行時にコマンドパッカービルドに情報をパスすることもできます)。Scherer 氏の Windows 10 のテンプレートでは、ビルドセクションでユーザー変数を使用し、変数セクションで実際の値を設定しています。&lt;/p&gt; &lt;p&gt;ビルドセクション:&lt;/p&gt; &lt;pre&gt;"iso_checksum": "",&lt;br&gt;&lt;br&gt;"iso_checksum_type": "",&lt;br&gt;&lt;br&gt;"iso_url": "",&lt;/pre&gt; &lt;p&gt;変数セクション:&lt;/p&gt; &lt;pre&gt;"iso_checksum": "27e4feb9102f7f2b21ebdb364587902a70842fb550204019d1a14b120918e455",&lt;br&gt;&lt;br&gt;&nbsp;"iso_checksum_type": "sha256",&lt;br&gt;&lt;br&gt;&nbsp;"iso_url": "https://software-download.microsoft.com/download/pr/17134.1.180410-1804.rs4_release_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso"&lt;/pre&gt; &lt;h2&gt;デモ&lt;/h2&gt; &lt;p&gt;簡単なデモンストレーションを表示するために、Scherer 氏のレポジトリをローカルにダウンロードしてパッカービルドを実行します。筆者(dan) のWindows 10イメージがビルドされ、virtualbox を作成し、Windows 10&nbsp;のトライアルISOをダウンロードしてデフォルト設定を行います。下のアウトプットで、ISOがダウンロードされ、スクリプトがVMのフロッピードライブにコピーされているのがわかります。&lt;/p&gt; &lt;pre&gt;Dans-MacBook-Pro:packer-windows-my dan$ ~/packer build -only=virtualbox-iso windows_10.json&lt;br&gt;&lt;br&gt;virtualbox-iso output will be in this color.&lt;br&gt;&lt;br&gt;&nbsp;&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Downloading or copying ISO&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Downloading or copying: https://software-download.microsoft.com/download/pr/17134.1.180410-1804.rs4_release_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 90%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 91%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 92%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 94%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 95%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 96%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 97%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 99%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 100%&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Download progress: 100%&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Creating floppy disk...&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying files flatly from floppy_files&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./answer_files/10/Autounattend.xml&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./floppy/WindowsPowershell.lnk&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./floppy/PinTo10.exe&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/fixnetwork.ps1&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/disable-screensaver.ps1&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/disable-winrm.ps1&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/enable-winrm.ps1&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/microsoft-updates.bat&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Copying file: ./scripts/win-updates.ps1&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Done copying files from floppy_files&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Collecting paths from floppy_dirs&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Resulting paths from floppy_dirs : []&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Done copying paths from floppy_dirs&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Creating virtual machine...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Creating hard drive...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Attaching floppy disk...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Creating forwarded port mapping for communicator (SSH, WinRM, etc) (host port 4194)&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Executing custom VBoxManage commands...&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Executing: modifyvm windows_10 --memory 2048&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: Executing: modifyvm windows_10 --cpus 2&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Starting the virtual machine...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Waiting 6m0s for boot...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Typing the boot command...&lt;br&gt;&lt;br&gt;==&gt; virtualbox-iso: Waiting for WinRM to become available...&lt;br&gt;&lt;br&gt;&nbsp;&nbsp;&nbsp; virtualbox-iso: WinRM connected.&lt;/pre&gt; &lt;h2&gt;まとめ&lt;/h2&gt; &lt;p&gt;Packerのイメージビルドで主にサポートされているOSは Linux ですが、Windows もしっかりサポートされています。Packer で、&rdquo;unattended&rdquo; 手法を使ってクリーンな Windows イメージビルドを作成できます。&lt;/p&gt;</plaintext></password></autologon></pre></div> <div class="BlogPost-Tags -mt3"> <span class="item"> <a href='/jp/blogs/tag/sysadmin'>システム管理者</a> </span> </div> </div> <div class="BlogPost-Author"> <img loading="lazy" src='https://d117h1jjiq768j.cloudfront.net/images/default-source/authors/dfranciscusheadshotf052fe95f8434f69963c5a9aa775930b.jpg?sfvrsn=334653e_2' alt='' title='dfranciscusheadshotf052fe95f8434f69963c5a9aa775930b' width="170" height="170" /> <div class="txt"> <h2> <a href='/jp/blogs/author/dan-franciscus' class="u-fwl">Dan Franciscus</a> </h2> <p class="-fs20"> Dan Franciscus is a systems engineer and VMware Certified Professional (VCP) specializing in VMware, PowerShell, and other Microsoft-based technologies. You can reach Dan at his blog (http://www.winsysblog.com/) or Twitter at @dan_franciscus. </p> </div> </div> <div class="-pt1 -pb5 -mb7"> <button aria-label="Back to Top" class="-ff-title -fw6 -p0 -ttu Btn--round" id="js-back-to-top" style="height: 30px;box-shadow: 0 5px 10px rgb(0 0 0 / 15%);"> <span class="-fs13 -lh140 -ml2 -mr1 -vat dib">トップに戻る</span> <svg width="8" viewBox="0 20 181 181" fill="none" xmlns="http://www.w3.org/2000/svg" height="17" class="-dib -mr2 -vat"> <rect width="185" height="284"></rect> <path d="M93 0L184.924 91.9239L166.539 110.309L74.6152 18.3848L93 0Z" fill="#225eff"></path> <rect y="93" width="130" height="26" transform="rotate(-45 0 93)" fill="#225eff"></rect> <rect x="81" y="33" width="26" height="181" fill="#225eff"></rect> </svg> </button> </div> <div class="BlogPost-Next v1 -mb5"> <h3 class="-ff-title -fs50 -mt4">関連ブログ:</h3> <ul class="-ml5 -s-ml0 -mb5 -vs1"> <li> <a href='/jp/blogs/how-to-search-windows-event-logs-across-hundreds-of-servers' class="-fs24 -db"> 何百ものサーバーからの Windows イベントログを検索する方法 </a> </li> </ul> </div> <h3 class="-ff-title -fs50">コメント</h3> <div class="-mb4"> <div id="disqus_thread"> <span id="previewMode" class="-dn u-dn">Comments are disabled in preview mode.</span> </div> <noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript> <script type="text/javascript"> var isPreview = 'False'; if (isPreview.toLowerCase() === "false") { var options = { root: null, rootMargin: '0px 0px 400px 0px', threshold: 0 }; const observer = new IntersectionObserver((entries, observer) => { entries.forEach((entry) => { if (entry.isIntersecting) { var disqus_shortname = 'progressblogs'; var disqus_identifier = 'cd3ea3a1-9ca2-4839-a4cc-98cafa20ba3e'; (function () { var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true; dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq); })(); observer.unobserve(entry.target); } }); }, options); // Start listening: const mountNode = document.querySelector("#disqus_thread"); observer.observe(mountNode); } else { $("#previewMode").attr('class', '-db u-db'); } </script> </div> <script type="application/ld+json">{"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.progress.com/blogs/create-windows-machine-builds-with-packer"},"headline":"Packer で Windows マシンビルドを作成する","image":{"@type":"ImageObject","url":"https://d117h1jjiq768j.cloudfront.net/images/default-source/ipsblogposts/moveit-wsftp-default-blog-top-1200x620.jpg?sfvrsn=acf41fd1_3","height":620,"width":1200},"datePublished":"2018-12-06","dateModified":"2024-02-05","author":{"@type":"Person","name":"Dan Franciscus"},"publisher":{"@type":"Organization","name":"Progress","alternateName":"Progress Software","url":"https://www.progress.com/","sameAs":["https://www.linkedin.com/company/progress-software","https://plus.google.com/u/0/b/101623588211186619905/+ProgressUS","https://www.facebook.com/progresssw","https://www.youtube.com/user/ProgressSW","https://twitter.com/progresssw"],"logo":{"@type":"ImageObject","url":"https://d3ba5g9yhie26y.cloudfront.net/img/progress-logo.png"}},"description":"Packer は、Linux だけでなく Windows もサポートしていますが、OSイメージの作成方法は両者で大きく異なります。Packer で Windows OS イメージを作成する方法を説明します。Packerは、Hashicorp が提供するオープンソースのオペレーティングシステム・イメー","@context":"http://schema.org","@type":"BlogPosting"}</script> </div> <style> .-lh100 { line-height: 1 !important; } .-fs80 { font-size: 80px !important; line-height: .96; } .u-jcc { justify-content: center; } .-c-black { color: #000 !important; } .row--equal { display: -webkit-box; display: flex; -ms-flex-wrap: wrap; -webkit-flex-wrap: wrap; flex-wrap: wrap; max-width: 97vw; } .row.row--separated { margin-top: 0 !important; } .row--equal [class*=col-] > :only-child, .row--equal [class*=col-] > :only-child > :only-child, .row--equal [class*=col-] > div:only-child > div:only-child > div:only-child { height: 100%; display: -webkit-box; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; -ms-flex-direction: column; -webkit-flex-direction: column; flex-direction: column; -webkit-box-align: start; align-items: flex-start; } .t-ie .row--equal .sf_cols, .t-ie .row--equal .sf_colsIn, .t-ie .row--equal a:not(.Link):not(.Btn), .t-ie .row--equal div:not([class*=col-]), .t-ie .row--equal h1, .t-ie .row--equal h2, .t-ie .row--equal h3, .t-ie .row--equal h4, .t-ie .row--equal h5, .t-ie .row--equal h6, .t-ie .row--equal img, .t-ie .row--equal p { max-width: 100%; -webkit-box-flex: 0; flex: 0 0 auto; } #html .-i-twitter:hover, #html .-i-twitter:focus {color: #1da1f2 !important} #html .-i-linkedin:hover, #html .-i-linkedin:focus {color: #0a66c2 !important} #html .-i-facebook:hover, #html .-i-facebook:focus {color: #1b74e4 !important} #html .-i-reddit:hover, #html .-i-reddit:focus {color: #ff4500 !important} @media only screen and (max-width: 1280px) { .-fs80 { font-size: 60px !important; } } @media only screen and (max-width: 960px) { .-fs80 { font-size: 48px !important; } .-l-third { width: 33.33333% !important; } .-l-two-thirds { width: 66.66666% !important; } } @media only screen and (max-width: 800px) { .-fs80 { font-size: 34px !important; } } @media only screen and (max-width: 599px) { .row--separated > div > [class*="col-"]:before, .row--separated > div:before, .row--separated-arrow > div > [class*="col-"]:first-child + div:before, .row--separated-arrow > div:first-child + div:before, .row--separated-arrow > div > [class*="col-"]:first-child + div:after, .row--separated-arrow > div:first-child + div:after { display: block; } } @media not all and (min-resolution: 0.001dpcm) { @supports (-webkit-appearance:none) { .row--equal [class*=col-] { margin-right: -.033em; display: -webkit-box; display: flex; } .row--equal [class*=col-] > :only-child, .row--equal [class*=col-] > :only-child > :only-child, .row--equal [class*=col-] > div:only-child > div:only-child > div:only-child { height: auto; -webkit-box-flex: 1; flex-grow: 1; } } } @media (-ms-high-contrast:none) and (max-width: 30em),screen and (-ms-high-contrast:active) and (max-width:30em) { .row--equal .sf_cols, .row--equal .sf_colsIn, .row--equal a:not(.Link):not(.Btn), .row--equal div:not([class*=col-]), .row--equal h1, .row--equal h2, .row--equal h3, .row--equal h4, .row--equal h5, .row--equal h6, .row--equal img, .row--equal p { max-width: 100%; -webkit-box-flex: 0; flex: 0 0 auto; } } </style></div> <div id="Content_T9DCED183044_Col01" class="sf_colsIn col-6" data-sf-element="Column 2" data-placeholder-label="Column 2"><div id="Content_T9DCED183023_Col00" class="sf_colsIn BlogPost-Sidebar" data-sf-element="EmptyWrapper" data-placeholder-label="BlogPost-Sidebar"><div id="Content_T9DCED183048_Col00" class="sf_colsIn" data-sf-element="EmptyWrapper" data-placeholder-label="EmptyWrapper"> <div class="sfContentBlock"> <a href="https://feeds.progress.com/blogs" class="BlogPost-RSS u-mt5" target="_blank" data-sf-ec-immutable=""><span>フォローする</span>RSS Feed</a> <div class="hr u-mb5">&nbsp;</div> </div> <h5 class="-fs16 -mb2 -ttu">トピック</h5><ul class="BlogPost-TopicsList List"><li><a href="/jp/blogs/data-platform" data-sf-ec-immutable="">データプラットフォーム</a> </li><li><a href="/jp/blogs/security-and-compliance" data-sf-ec-immutable="">セキュリティとコンプライアンス</a> </li></ul><div id="Content_T9DCED183025_Col00" class="sf_colsIn -mb3" data-sf-element="EmptyWrapper" data-placeholder-label="EmptyWrapper"><!-- CustomSearch.BlogsSidebar --> <aside class="Blogs-Sidebar-Search -mb6"> <tk-site-search data-redirect='true' data-tag-input-button-icon='true' data-tag-input-placeholder='search in blogs...' data-redirect-uri='/blogs/search?filter=source%3Dprogress.com/jp/blogs'> </tk-site-search> </aside> </div> <div id="Content_T9DCED183034_Col00" class="sf_colsIn -mb3 BlogPost-Promo" data-sf-element="EmptyWrapper" data-placeholder-label="EmptyWrapper"> <div class="svgi -w5 -h5 -mb1"> <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewbox="0 0 70 70" style="enable-background:new 0 0 70 70;" xml:space="preserve" aria-label="Customized Training"> <path d="M55.3 49.3V35.2M46.5 39.3l8.8-5.1 8.9 5.1M18.7 35.6v32.2M9.9 63.7l8.8 5.1 8.9-5.1"></path> <path d="M55.3 34.4v14.1c0 3-2 6-5.9 8.2-7.9 4.6-20.8 4.6-28.7 0-4.1-2.4-6.1-5.5-6-8.6V27.8"></path> <path d="M3.4 21.1L35.1 2.8l31.5 18.3-31.7 18.3z"></path> <g> <path d="M35.3 21l-16.6 9.6v5.8"></path> </g> </svg> </div> <h4 class="u-fs18 u-fwb">Sitefinityトレーニングと認定を開始</h4><p class="u-fs14">クラス最高のSitefinityの機能を使って、魅力的なデジタル体験を提供する方法をエキスパートがお教えします。</p><a href="https://www.progress.com/services/education/sitefinity/basic-sitefinity-developer-certification" class="Btn Btn--sec -db u-fs16" data-sf-ec-immutable="">さらに詳しく</a></div> <div id="Content_C040_Col00" class="sf_colsIn -pt2 BlogPost-More" data-sf-element="EmptyWrapper" data-placeholder-label="EmptyWrapper"> <div class="sfContentBlock"> <h5 class="u-fs16 u-mb2 f-ttu">More From Progress</h5> </div> <div> <div> <div class="List-item row"> <div class="col-8 -l-full -pr0"> <img width="100" src="/images/default-source/default-album/related-asset-new-default-65x50.jpg?sfvrsn=82c03cd_2" loading="lazy"> </div> <div class="col-16 -l-full"> <div class="List-body"> <a href="https://www.progress.com/blogs/catching-up-scholarship-series-recipients" class="-mb0 -fs16">Catching Up with Our Scholarship Series Recipients</a> </div> </div> </div> </div> </div> <div class="hr -mt2 -mb3">&nbsp;</div> <div> <div> <div class="List-item row"> <div class="col-8 -l-full -pr0"> <img width="100" src="https://d117h1jjiq768j.cloudfront.net/images/default-source/oe-campaigns/morethanmonitoring_300x225.png?sfvrsn=3eef76c6_0" alt="MoreThanMonitoring_300x225" title="MoreThanMonitoring_300x225" loading="lazy"> </div> <div class="col-16 -l-full"> <div class="List-body"> <a href="https://www.progress.com/campaigns/openedge/webinars/mdbamorethanmonitoring" class="-mb0 -fs16"> Progress Managed Database Is More Than A Monitoring Package</a> </div> </div> </div> </div> </div> <div class="hr -mt2 -mb3">&nbsp;</div> <div> <div> <div class="List-item row"> <div class="col-8 -l-full -pr0"> <img width="100" src="https://d117h1jjiq768j.cloudfront.net/images/default-source/blogs/2021/2021-09/sf14-whats-new-opengraph-1200x630-ritm0129550.png?sfvrsn=4c8162bd_0" alt="" title="sf14-whats-new-opengraph-1200x630-ritm0129550" loading="lazy"> </div> <div class="col-16 -l-full"> <div class="List-body"> <a href="https://www.progress.com/blogs/meet-sitefinity-dx-14" class="-mb0 -fs16">New Digital Challenges, New Me: Meet Sitefinity DX 14.0</a> </div> </div> </div> </div> </div> <div class="hr -mt2 -mb3">&nbsp;</div> </div> <div id="Content_T9DCED183027_Col00" class="sf_colsIn BlogPost-Sticky-Sidebar" data-sf-element="EmptyWrapper" data-placeholder-label="BlogPost-Sticky-Sidebar"><div id="Content_T9DCED183047_Col00" class="sf_colsIn" data-sf-element="EmptyWrapper" data-placeholder-label="EmptyWrapper"><div id="Content_T9DCED183028_Col00" class="sf_colsIn Blogs-Form -pb2 -pt2" data-sf-element="EmptyWrapper" data-placeholder-label="Blogs-Form"><div id="Content_T9DCED183030_Col00" class="sf_colsIn -l-half -m-half -s-full Sticky-Form" data-sf-element="EmptyWrapper" data-placeholder-label="EmptyWrapper"> <p class="f-black u-fs14 u-mb2 u-fwn js-subtitle">より優れた業務アプリケーションやウェブサイトの開発に役立つ、ニュース、情報、チュートリアルをご案内します。</p> </div> </div> </div> </div> </div> </div> </div> </div> </div> </section></div> </div> <footer class="PRGS-Footer" data-prgs-footer-version="1.4.54" data-lang="jp"><div class="PRGS-container"><div class="PRGS-Footer-core"><div class="PRGS-row"><div class="PRGS-col-10"><a href="https://www.progress.com" class="PRGS-Footer-logo"><svg xmlns="http://www.w3.org/2000/svg" width="130" height="32" viewBox="0 0 512 120" role="img"><title>Progress</title><path class="PRGS-branding-shape" d="M95.52,29.33h0v51a3.93,3.93,0,0,1-1.78,3.08l-1.67,1L79.35,91.76l-8.59,5-1.78,1V42.6L21.23,15,43.91,1.93,46,0.74a3.94,3.94,0,0,1,3.56,0L81,18.9l14.51,8.38v2.05ZM58.36,48.72l-9.79-5.66L25.66,29.83a4,4,0,0,0-3.56,0L1.77,41.57,0,42.6,34.49,62.51v39.83l20.3-11.73,1.79-1a3.94,3.94,0,0,0,1.78-3.08V48.72ZM0,82.43L23.86,96.21V68.63Z"></path><path class="PRGS-branding-text" d="M148.09,27.28h-26V97.76h11.55V70.1h14.57c15.77,0,24.45-7.7,24.45-21.69,0-6.35-2.4-21.12-24.55-21.12M160.89,48.6c0,7.95-4.12,11.19-14.24,11.19h-13V37.69h14.57c8.56,0,12.71,3.57,12.71,10.91M207,46.41l0.87,0.42-2,10.42-1.35-.42a11.32,11.32,0,0,0-3.34-.51c-10.79,0-11.67,8.59-11.67,19V97.76H178.87V46h10v6.24c2.73-4.2,6-6.37,10.37-6.9A14.55,14.55,0,0,1,207,46.41M233.29,45c-8.42,0-15.16,3.2-19.5,9.27-4.56,6.37-5.23,13.85-5.23,17.74,0,16.36,9.7,26.92,24.73,26.92,18.26,0,24.73-14.71,24.73-27.3,0-7.25-2.15-13.82-6-18.51-4.41-5.31-10.87-8.12-18.7-8.12m0,44.38c-8.37,0-13.57-6.66-13.57-17.37s5.2-17.55,13.57-17.55S247,61.23,247,71.78c0,10.83-5.24,17.56-13.66,17.56M347.89,46.41l0.87,0.42-2,10.42-1.35-.42a11.26,11.26,0,0,0-3.33-.51c-10.78,0-11.66,8.59-11.66,19V97.76H319.76V46h10v6.24c2.73-4.2,6-6.37,10.37-6.9a14.54,14.54,0,0,1,7.73,1.06m38.4,34.76-0.2.57c-2.23,6.36-7.57,7.7-11.65,7.7-8.09,0-13.3-5.37-13.81-14.09h36.59l0.13-1a31.26,31.26,0,0,0,.12-4.12c0-.34,0-0.64,0-0.93C396.93,54.78,387.48,45,374,45c-7.9,0-14.37,3.1-18.73,9a30.85,30.85,0,0,0-5.54,18c0,16,9.95,26.74,24.74,26.74,11.45,0,19.33-5.82,22.2-16.38L397,81.16h-10.7ZM361,66.05c0.9-7.17,5.81-11.73,12.79-11.73,5.33,0,11.64,3.1,12.52,11.73H361Zm-60.7-15.71c-3.45-3.58-8.06-5.39-13.76-5.39-15.69,0-22.83,13.81-22.83,26.63,0,13.16,7.06,26.44,22.83,26.44a18.33,18.33,0,0,0,13.35-5.42c0,2.28-.1,4.45-0.16,5.38-0.58,8.54-4.68,12.51-12.91,12.51-4.47,0-9.61-1.59-10.6-6l-0.22-1H265.46l0.17,1.41c1.1,9.12,9.11,14.79,20.9,14.79,10.34,0,17.7-3.9,21.28-11.26,1.73-3.55,2.6-8.72,2.6-15.37V46H300.28v4.34ZM287.19,88.49c-3.74,0-12.43-1.69-12.43-17.37,0-10.3,4.87-16.7,12.71-16.7,6.06,0,12.52,4.39,12.52,16.7,0,10.87-4.79,17.37-12.81,17.37m159.67-6.31c0,8.23-6.83,16.53-22.09,16.53-13.5,0-21.53-5.85-22.61-16.45L402,81.16h10.52L412.73,82c1.29,6.38,7.37,7.72,12.24,7.72,5.34,0,11-1.72,11-6.54,0-2.44-1.59-4.18-4.73-5.16-1.86-.55-4.15-1.2-6.56-1.87-4.16-1.16-8.47-2.38-11.12-3.29-6.56-2.35-10.33-6.93-10.33-12.56,0-10.43,10.16-15.11,20.22-15.11,13.46,0,20.42,5.07,21.3,15.49l0.09,1.07H434.5l-0.14-.82c-1-6-7-6.9-10.48-6.9-3,0-10,.53-10,5.5,0,2.25,1.93,3.91,5.89,5.06,1.18,0.33,2.94.78,5,1.31,4.22,1.09,9.48,2.46,12.13,3.37,6.59,2.32,9.93,6.67,9.93,13m49.39,0c0,8.23-6.83,16.53-22.09,16.53-13.5,0-21.53-5.85-22.61-16.45l-0.11-1.09H462L462.12,82c1.29,6.38,7.37,7.72,12.24,7.72,5.34,0,11-1.72,11-6.54,0-2.44-1.59-4.18-4.72-5.16-1.86-.55-4.15-1.2-6.57-1.87-4.16-1.16-8.46-2.38-11.11-3.29-6.57-2.35-10.33-6.93-10.33-12.56,0-10.43,10.16-15.11,20.22-15.11,13.46,0,20.42,5.07,21.29,15.49l0.09,1.07H483.9l-0.14-.82c-1-6-7-6.9-10.48-6.9-3,0-9.95.53-9.95,5.5,0,2.25,1.93,3.91,5.89,5.06,1.18,0.33,2.94.78,5,1.31,4.22,1.09,9.48,2.46,12.13,3.37,6.58,2.32,9.93,6.67,9.93,13"></path><path class="PRGS-branding-text" d="M504.71,51.49A7.37,7.37,0,1,1,512,44.12a7.23,7.23,0,0,1-7.29,7.37m0-13.49a6.12,6.12,0,1,0,6,6.12,5.91,5.91,0,0,0-6-6.12m-0.85,7.49v2.46h-2.17V40.21h3.62a2.58,2.58,0,0,1,2.86,2.7,2.26,2.26,0,0,1-1.49,2.34l1.77,2.7H506l-1.49-2.46h-0.68ZM505.07,42h-1.21v1.73h1.21a0.86,0.86,0,0,0,1-.85,0.88,0.88,0,0,0-1-.89"></path><!--[if lte IE 8]><image width="130" height="32" border="0" src="https://d3ba5g9yhie26y.cloudfront.net/img/progress-logo.png" xlink:href=""><![endif]--></svg></a><p class="PRGS-Footer-copyright">Copyright &copy; 2024 Progress Software Corporation、そして/または その子会社もしくは関連会社。 全著作権を所有。</p><p>Progress、Telerik、Ipswitch、Chef、Kemp、Flowmon、MarkLogic、Semaphore と、ここで使用される特定の商品名は、Progress Software Corporation、そして/または 米国内もしくはその他の国の子会社あるいは関連会社の1つ、の商標、または登録商標です。 適切な表示のためには、 <a href="/legal/trademarks">Trademarks</a> を参照してください。</p></div><div class="PRGS-col-14"><div class="PRGS-Footer-social"><a href="https://www.facebook.com/progresssw" title="facebook" target="_blank" aria-label="facebook (opens in new window)"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 37 37" width="24" height="24" aria-labelledby="title"><title>Facebook</title><path d="m36.8 18.4c0-10.1-8.2-18.4-18.4-18.4-10.1 0-18.4 8.3-18.4 18.4 0 8.7 6 15.9 14 17.9v-12.3l-3.8 0.1v-5.7h3.8v-2.4c0-6.3 2.8-9.2 9-9.2 1.1 0 3.1 0.3 4 0.5v5.1c-0.5-0.1-1.2-0.1-2.2-0.1-3 0-4.2 1.2-4.2 4.1v2h6.1l-1.1 5.7h-5v12.6c9.2-1.1 16.2-8.9 16.2-18.3"/></svg> </a><a href="https://x.com/progresssw" title="X" target="_blank" aria-label="X (opens in new window)"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 -3 32 40" width="24" height="24" aria-labelledby="title"><title>X</title><path d="m18.9 13.7l12.9 18.8h-9.5l-8.7-12.6-10.8 12.6h-2.8l12.4-14.5-12.4-18h9.5l8.2 11.9 10.2-11.9h2.8l-11.8 13.7zm-3.8 4.5l8.5 12.2h4.3l-10.5-15-1.2-1.8-8.1-11.5h-4.3l10 14.3 1.3 1.8z"/></svg> </a><a href="https://www.youtube.com/user/ProgressSW" title="youtube" target="_blank" aria-label="youtube (opens in new window)"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 42 30" width="24" height="24" aria-labelledby="title"><title>YouTube</title><path d="m41.7 14.6c0 0 0 6.8-0.9 10-0.5 1.8-1.9 3.2-3.7 3.7-3.2 0.9-16.3 0.9-16.3 0.9 0 0-13 0-16.2-0.9-1.8-0.5-3.2-1.9-3.7-3.7-0.9-3.2-0.9-10-0.9-10 0 0 0-6.8 0.9-10 0.5-1.8 1.9-3.2 3.7-3.7 3.2-0.9 16.2-0.9 16.2-0.9 0 0 13.1 0 16.3 0.9 1.8 0.5 3.2 1.9 3.7 3.7 0.9 3.2 0.9 10 0.9 10zm-14.2 0l-10.8-6.3v12.5z"/></svg> </a><a href="https://www.instagram.com/progress_sw_" title="instagram" target="_blank" aria-label="instagram (opens in new window)"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="-1 -1 37 37" width="24" height="24" aria-labelledby="title"><title>Instagram</title><path fill-rule="evenodd" d="m34.6 10.2c0.1 1.8 0.1 2.4 0.1 7.1 0 4.7 0 5.3-0.1 7.1 0 1.4-0.3 2.9-0.8 4.2-0.9 2.3-2.8 4.2-5.1 5.1q-2 0.7-4.2 0.8c-1.8 0.1-2.4 0.1-7.1 0.1-4.7 0-5.3 0-7.2-0.1-1.4 0-2.8-0.3-4.2-0.8-2.3-0.9-4.1-2.8-5-5.1q-0.8-2-0.9-4.1c-0.1-1.9-0.1-2.5-0.1-7.2 0-4.6 0-5.2 0.1-7.1 0-1.4 0.3-2.8 0.8-4.2 0.9-2.3 2.7-4.2 5.1-5.1q2-0.7 4.2-0.8c1.8-0.1 2.5-0.1 7.1-0.1 4.7 0 5.4 0 7.2 0.1 1.4 0 2.9 0.3 4.2 0.8 2.3 0.9 4.2 2.7 5.1 5.1q0.7 2 0.8 4.2zm-3.1 7.1c0-4.6 0-5.2-0.1-7q0-1.6-0.6-3.2c-0.6-1.5-1.8-2.7-3.3-3.3q-1.5-0.6-3.2-0.6c-1.8-0.1-2.4-0.1-7-0.1-4.6 0-5.2 0.1-7 0.2q-1.6 0-3.2 0.6c-1.5 0.5-2.7 1.7-3.2 3.2q-0.6 1.6-0.6 3.2c-0.1 1.8-0.1 2.4-0.1 7 0 4.6 0 5.2 0.1 7q0 1.6 0.6 3.2c0.5 1.5 1.7 2.7 3.2 3.3q1.6 0.6 3.2 0.6c1.8 0.1 2.4 0.1 7 0.1 4.6 0 5.2 0 7-0.1q1.7 0 3.2-0.6c1.5-0.6 2.7-1.8 3.3-3.3q0.6-1.6 0.6-3.2c0.1-1.8 0.1-2.4 0.1-7z"/><path fill-rule="evenodd" d="m26.2 17.3c0 4.9-4 8.9-8.9 8.9-4.9 0-8.9-4-8.9-8.9 0-4.9 4-8.9 8.9-8.9 4.9 0 8.9 4 8.9 8.9zm-3.1 0c0-3.2-2.6-5.8-5.8-5.8-3.2 0-5.7 2.6-5.7 5.8 0 3.2 2.5 5.7 5.7 5.7 3.2 0 5.8-2.5 5.8-5.7z"/><path d="m26.5 6c-1.1 0-2 0.9-2 2.1 0 1.1 0.9 2 2 2 1.2 0 2.1-0.9 2.1-2 0-1.2-0.9-2.1-2.1-2.1z"/></svg> </a><a href="https://www.linkedin.com/company/progress-software" title="linkedin" target="_blank" aria-label="linkedin (opens in new window)"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="-1 -1 37 37" width="24" height="24" aria-labelledby="title"><title>LinkedIn</title><path d="m34 3.8v26.4c0 2.1-1.7 3.8-3.8 3.8h-26.4c-2.1 0-3.8-1.7-3.8-3.8v-26.4c0-2.1 1.7-3.8 3.8-3.8h26.4c2.1 0 3.8 1.7 3.8 3.8zm-23.7 9.1h-5.1v16.4h5.1zm0.4-5.2c0-1.6-1.3-3-3-3-1.6 0-3 1.4-3 3 0 1.7 1.4 3.1 3 3.1 1.7 0 3-1.4 3-3.1zm18.6 11.2c0-4.4-2.5-6.5-6-6.5-3.5 0-4.9 2.7-4.9 2.7v-2.2h-4.9v16.4h4.9v-8.6c0-2.3 1-3.7 3.1-3.7 1.8 0 2.7 1.3 2.7 3.7v8.6h5.1z"/></svg></a></div><div class="PRGS-Footer-info"><a href="/legal/terms-of-use">利用規約</a> <a href="/legal/privacy-center">プライバシーセンター</a> <a href="/security">セキュリティセンター</a> <a href="/legal/trademarks">Trademarks</a> <a href="/legal">使用許諾契約</a> <a href="/company/code-of-conduct">行動規範</a> <a href="/company/careers">採用情報</a> <a href="/company/offices">オフィス所在地</a><div class="PRGS-CCPA"><a class="Btn" href="https://forms.progress.com/ccpa-subscription" target="_blank" aria-label="個人情報の販売または共有を不許可 (opens in new window)">個人情報の販売または共有を不許可</a></div></div><div class="PRGS-Footer-cms">Powered by <a href="https://www.progress.com/sitefinity-cms">Progress Sitefinity</a></div></div></div></div></div></footer> <script type="text/javascript"> navigator.sayswho=function(){var u=navigator.userAgent,n,t,r,f,i=u.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i)||[];/trident/i.test(i[1])?(console.log("in trident"),n=/\brv[ :]+(\d+)/g.exec(u)||[],t="ie",r=n[1]||""):i[1]==="Chrome"?(n=u.match(/\b(OPR|Edge)\/(\d+)/),n!=null?(t=n.slice(1,2).toString().toLowerCase().replace("opr","opera"),r=n.slice(2)):(t=i[1].toString().toLowerCase(),r=i[2].toString())):(t=i[1].toString().toLowerCase(),r=i[2].toString());f="t-"+t+" t-"+t+r;document.querySelector("html").setAttribute("class",f)}() </script> <script type="text/javascript" src="/WebResource.axd?d=wnB2OjhYopty-dCFa4b2kM0a7cZHRcWddchIGbJ0gChT5EgAQjw_paDAT7Yrr74369M6pavW7Es4b5iKcdNZkq1nNHf9lWWzZ24VUQhAZ6mxyLXVt4eFCo2wbBdsnjAfiLu8BepdiGVJZ4rONaB4NJcIs0B1zv2PuUfccThS_l8g0945lFP_UlXm6eLmoQVHpoL3sfr5I8EMEaV0zlJryJBLm2s1&amp;t=638553478980000000"> </script><script data-sf-pers-id="9c304d44-280c-4702-a1b7-7286fe4975f7" data-sf-pers-raise-events="True" data-sf-pers-page-node-id="95756841-2c73-4f00-be51-744c7c424312" data-sf-pers-page-data-id="ef03a43b-bbc3-4103-b8a5-4aa53bc9d5a7" data-sf-pers-page-node-key="95756841-2C73-4F00-BE51-744C7C424312/3df8bdf1-9630-4d26-8de0-de3659b0e294/SitefinitySiteMap" data-sf-app-path="/" data-sf-loaded-scripts="['//cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js', '//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js', 'https://d3ba5g9yhie26y.cloudfront.net/cache/56213b491a6cbbe9996017c3ff05a3d03bede306/js/all.min.js']" data-sf-culture="ja"></script> <script> (async function () { const cdn = "https://d6vtbcy3ong79.cloudfront.net"; const id = "promotion-1"; const response = await fetch(`/webapi/Announcements/GetPromo?url=${window.location.href}`, { method: "GET", cache: "no-cache", }); const json = await response.json(); const model = json?.content?.promoViewModel; if (model) { let version = model.scriptVersion || "latest"; let stylesheet = cdn + "/prgs-sticky-notification/" + version + "/index.min.css"; let javascript = cdn + "/prgs-sticky-notification/" + version + "/index.min.js"; let imageUrl = model.image || "https://d585tldpucybw.cloudfront.net/sfimages/default-source/ninjas/sticky-notification-illustration.svg"; let campaignName = model.campaignName || model.title; let html = model.htmlRawContent; function track(eventType) { try { if (!OptanonActiveGroups) { console.log("OptanonActiveGroups do not exist, event type = " + eventType); return; } } catch (e) { console.log("OptanonActiveGroups threw error, event type = " + eventType); console.log(e); return; } if (!OptanonActiveGroups.includes("2")) { console.log("cookies not accepted, event type = " + eventType); return; } window.dataLayer = window.dataLayer || []; let banner = document.querySelector(`.psn.psn--rts`); let bannerType = "Right Side Banner"; let bannerTopic = campaignName; let bannerExpandEventName = "Popup Banner Expand"; let bannerAutoExpandEventName = "Popup Banner Auto Expand"; let bannerCollapseEventName = "Popup Banner Collapse"; let bannerImpressionEventName = "Popup Banner Impression"; let bannerCtaClickEventName = "Popup Banner CTA Click"; let bannerExpandedState = "expanded"; let bannerCollapsedState = "collapsed"; if (eventType === "impression") { dataLayer.push({ event: bannerImpressionEventName, state: bannerExpandedState, type: bannerType, promoting: bannerTopic }); } if (eventType === "expand") { dataLayer.push({ event: bannerExpandEventName, type: bannerType, promoting: bannerTopic }); } if (eventType === "auto-expand") { dataLayer.push({ event: bannerAutoExpandEventName, type: bannerType, promoting: bannerTopic }); } if (eventType === "collapse") { dataLayer.push({ event: bannerCollapseEventName, type: bannerType, promoting: bannerTopic }); } if (eventType === "cta-click") { dataLayer.push({ event: bannerCtaClickEventName, type: bannerType, promoting: bannerTopic, ctaLandingPage: window.location.href }); } } function gtm_init_sticky_notification() { window.biz.psn.create({ type: 'right-top-small', data: { label: model.label, content: html, heading: model.heading, image: imageUrl, imageAlt: model.imageAltText, ctaUrl: model.ctaUrl, ctaText: model.ctaText, ctaClass: 'Btn Btn--round3 -i-mark-arrow cta-btn-js' }, onReady: () => track("impression"), onCtaClick: () => track("cta-click"), onAutoExpand: () => track("auto-expand"), onManualExpand: () => track("expand"), onManualCollapse: () => track("collapse") }); } function loadResource(url, type) { return new Promise(function (resolve, reject) { var resource = document.createElement(type === 'text/css' ? 'link' : 'script'); if (!['text/css', 'text/javascript', 'module'].includes(type)) { return reject(new Error('Type', type, 'is not supported')); } if (type === 'text/css') { resource.rel = 'stylesheet'; resource.type = type; resource.href = url; } else { resource.async = true; resource.type = type; resource.src = url; } document.body.append(resource); resource.addEventListener('load', resolve); resource.addEventListener('error', reject); }); } var js = loadResource(javascript, "module"); var css = loadResource(stylesheet, "text/css"); Promise.all([css, js]).then(gtm_init_sticky_notification).catch(console.error); } })(); </script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.6.3/jquery.min.js" type="text/javascript"></script><script src="//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/3.4.0/jquery-migrate.min.js" type="text/javascript"></script> <script type="text/javascript"> var oneTrustHelper = (function () { function evalGTMScript() { var gtmScript = document.getElementById("GTMScript"); gtmScript.type = "text/javascript"; gtmScript.classList.remove("optanon-category-1"); eval(gtmScript.innerHTML); }; return { gtmFallback: function () { console.warn('OneTrust not loaded.'); if (document.readyState !== 'loading') { evalGTMScript(); } else { document.addEventListener('readystatechange', function () { if (document.readyState === 'interactive') { evalGTMScript(); } }); }; } }; })(); </script> <script onerror="oneTrustHelper.gtmFallback()" src="https://cdn.cookielaw.org/consent/f9397248-1dbe-47fc-9dbf-c50e7dd51096/otSDKStub.js" data-language="ja" type="text/javascript" charset="UTF-8" data-domain-script="f9397248-1dbe-47fc-9dbf-c50e7dd51096"></script> <script type="text/javascript"> (function (w) { w.OptanonGroups = {"StrictlyNecessaryCookies":"1","PerformanceCookies":"2","FunctionalCookies":"3","TargetingCookies":"4"}; w.isOptanonGroupActive = function (groupId, explicit) { if (!w.OptanonActiveGroups) return false; var groupMatchKey = ',' + groupId + ','; return w.OptanonActiveGroups.indexOf(groupMatchKey) !== -1; } function toggleSitefinityTrackingConsent() { var performanceCookiesGroupId = w.OptanonGroups.PerformanceCookies; var isPerformanceCookiesGroupIdActive = w.isOptanonGroupActive(performanceCookiesGroupId, true); if (w.TrackingConsentManager) { w.TrackingConsentManager.updateUserConsent(isPerformanceCookiesGroupIdActive); } }; var trackingScriptsQueue = []; w.invokeTrackingScript = function (thisReference, trackingGroup, functionReference) { if (isOptanonGroupActive(trackingGroup, true)) { functionReference.call(thisReference); } else { trackingScriptsQueue.push({ thisReference: thisReference, trackingGroup: trackingGroup, functionReference: functionReference }); } } var isOptanonToggled = false; var preferenceChangeHandlerAdded = false; w.OptanonWrapper = function () { var newTrackingScriptsQueue = []; for (var i = 0; i < trackingScriptsQueue.length; i++) { var trackingScriptData = trackingScriptsQueue[i]; if (isOptanonGroupActive(trackingScriptData.trackingGroup, true)) { trackingScriptData.functionReference.call(trackingScriptData.thisReference); } else { newTrackingScriptsQueue.push(trackingScriptData); } } trackingScriptsQueue = newTrackingScriptsQueue; if (!isOptanonToggled && w.location.hash === '#cookie-settings' && true) { isOptanonToggled = true; Optanon.ToggleInfoDisplay(); } if(!preferenceChangeHandlerAdded){ OneTrust.OnConsentChanged(function() { // Trigger cookie check process after user makes changes to allowed cookie groups from the OneTrust cookie settings dialog. $.ajax( { url: '/webapi/CookiePreferences/Update', type: 'HEAD' }); }); preferenceChangeHandlerAdded = true; } toggleSitefinityTrackingConsent(); } })(window); </script> <script id="GTMScript" type="text/plain" class="optanon-category-1">(function (w, d, s, l, i) { w[l] = w[l] || []; w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); var f = d.getElementsByTagName(s)[0], j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; j.async = true; j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; f.parentNode.insertBefore(j, f); })(window, document, 'script', 'dataLayer', 'GTM-TX8G7Q');</script> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-TX8G7Q" height="0" width="0" style="display: none; visibility: hidden"></iframe></noscript> <script type="text/plain" class="optanon-category-2">!function (e) { for (var r = document.getElementsByTagName("script")[0], s = r.parentNode, t = 0; t < e.length; t++) { var i = e[t], c = document.createElement("script"); c.src = i.src, c.type = "text/javascript", i.id && (c.id = i.id), s.insertBefore(c, r) } }([{ id: "atcOverride", src: "//secure.progress.com/js/atcOverride.js" }, { id: "redirect", src: "//secure.progress.com/js/redirect.js" }]);</script> <script src="https://d3ba5g9yhie26y.cloudfront.net/cache/56213b491a6cbbe9996017c3ff05a3d03bede306/js/all.min.js" type="text/javascript"></script> <script type="text/javascript"> window.dataLayer = window.dataLayer || [];dataLayer.push({"tax_blogpost_products":"moveit,ws-ftp","tax_blogpost_author_name":"Dan Franciscus","tax_blogpost_seodescription":"Packer は、Linux だけでなく Windows もサポートしていますが、OSイメージの作成方法は両者で大きく異なります。Packer で Windows OS イメージを作成する方法を説明します。Packerは、Hashicorp が提供するオープンソースのオペレーティングシステム・イメー","tax_blogpost_seopagetitle":"Packer で Windows マシンビルドを作成する","tax_blogpost_topics":"セキュリティとコンプライアンス","tax_blogpost_title":"Packer で Windows マシンビルドを作成する","tax_blogpost_urlname":"create-windows-machine-builds-with-packer","tax_blogpost_lastmodified":"20240205","tax_blogpost_localizedmodificationdate":"20181207","tax_blogpost_tags":"システム管理者","event":"tax_loaded"}); </script><script type="text/javascript">var disqus_shortname="progressblogs";(function(){var n=document.createElement("script");n.async=!0;n.type="text/javascript";n.src="//"+disqus_shortname+".disqus.com/count.js";(document.getElementsByTagName("HEAD")[0]||document.getElementsByTagName("BODY")[0]).appendChild(n)})()</script><script type="text/javascript"> $(function () { var $BPT = $('.js-count-them'); var $BB = $('.BlogsBar'); var BPToffset = $BPT.offset(); var BTposition = BPToffset.top + $BPT.height() $(window).scroll(function (event) { var scroll = $(window).scrollTop(); if (scroll > BTposition + 20 && !$BB.hasClass('visible')) { $BB.addClass('visible') } else if (scroll < BTposition + 20 && $BB.hasClass('visible')) { $BB.removeClass('visible') } }); $('#js-back-to-top').on('click', function(){ $('html, body').animate({scrollTop: 0}, 500); }); $('.BlogPost-Link').hover(function () { $('.BlogPost-Link.active').removeClass('active'); $(this).addClass('active'); }); $('.BlogsBar-Logo').hover(function () { $('.BlogsBar').addClass('is-logo-hovered') }, function () { $('.BlogsBar').removeClass('is-logo-hovered') }); }); </script><script type="text/plain" class="optanon-category-2"> (function() { var script = '//s1325.t.eloqua.com/visitor/v200/svrGP?pps=70&siteid=1325'; (function getScript(source, callback) { var script = document.createElement('script'); var prior = document.getElementsByTagName('script')[0]; script.async = 1; prior.parentNode.insertBefore(script, prior); script.onload = script.onreadystatechange = function( _, isAbort ) { if(isAbort || !script.readyState || /loaded|complete/.test(script.readyState) ) { script.onload = script.onreadystatechange = null; script = undefined; if(!isAbort) { if(callback) callback(); } } }; script.src = source; })(script, function() { if (typeof GetElqCustomerGUID == 'function') { var userId = GetElqCustomerGUID(); document.cookie = 'elqUserId=' + userId + '; path=/;SameSite=Lax;'; } }); })(); </script><script type="application/json" id="PersonalizationTracker"> {"IsPagePersonalizationTarget":false,"IsUrlPersonalizationTarget":false,"PageId":"95756841-2c73-4f00-be51-744c7c424312"} </script><script type="text/javascript" src="/WebResource.axd?d=NjxTqR2bqTw1rewxxlkHPraL2jIxQu-jeKtj_FVg9d3PrrM3uz8NRhk2eFVyVb67KR1JxTxZONJuZSJ-jWm4cJXbV8g-J6gHVy5OlKtyYCuu--ep6y1G89g8w5f11V8CafTCWV4YnvGu4qpZ2dLdB1GmMuoKt9K5Ql8qKMHDaXnsQsffqxF8-n6RABxV8mlnZdcODcZLDeDl6l71tqCa6YnJ1Go1&amp;t=638553478980000000"> </script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/prism.min.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/plugins/toolbar/prism-toolbar.min.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/plugins/show-language/prism-show-language.min.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/components/prism-csharp.min.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/components/prism-bash.min.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/components/prism-java.min.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/components/prism-javascript.min.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/components/prism-markup.min.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/components/prism-python.min.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/components/prism-sql.min.js"></script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.15.0/components/prism-typescript.min.js"></script><script type="text/javascript"> $(function(){$(".FeaturedQuote").each(function(){var n=$(this).clone().removeClass("FeaturedQuote").addClass("featured-txt");$(this).append(n).after(n.append('<span class="icon-twitter" />'));var t="http://twitter.com/share?text="+encodeURIComponent($(this).text());$(this).next().wrap('<a href="'+t+'" class="featured-quote popupMeJS"><\/a>')});$(".popupMeJS").on("click",function(){var n=575,t=400,i=($(window).width()-n)/2,r=($(window).height()-t)/2,u=$(this).attr("href")+"&url="+window.location.href,f="scrollbars=1,status=1,width="+n+",height="+t+",top="+r+",left="+i;return window.open(u,"Share",f),!1});$(".BlogsBar:not(.BlogsBarDetail)").addClass("hide")});$(".FeaturedQuote").length&&($(".BlogPost-Content ol li").addClass("fix-list-align"),$(window).width()<420&&$(".BlogPost-Content ol").css({clear:"both"}));$(".FeaturedQuote").length&&($(".BlogPost-Content ul li").addClass("fix-list-align"),$(window).width()<420&&$(".BlogPost-Content ul").css({clear:"both"}));$(document).ready(function(){var n=$(".BlogPost-Content .Blogs-Share"),t=$(".featured-quote");function i(n,t){var i=n.offset().left,r=n.offset().top,e=n.outerHeight(!0),o=n.outerWidth(!0),s=r+e,h=i+o,u=t.offset().left,f=t.offset().top,c=t.outerHeight(!0),l=t.outerWidth(!0),a=f+c,v=u+l;return s<f||r>a||h<u||i>v?!1:!0}n[0]!==undefined&&t[0]!==undefined&&i($(n[0]),$(t[0]))&&$($(".featured-quote")[0]).addClass("full-quote")}) </script><script type="text/javascript" src="https://platform.twitter.com/widgets.js"></script><nav id='js-culture-links' class='-dn'><a href='https://www.progress.com/blogs/create-windows-machine-builds-with-packer' data-culture='en'>English - Create Windows Machine Builds with Packer</a><a href='https://www.progress.com/nl/blogs' data-culture='nl'>Nederlands - Weblogs</a><a href='https://www.progress.com/fr/blogs' data-culture='fr'>Français - Blogues</a><a href='https://www.progress.com/de/blogs' data-culture='de'>Deutsch - Blogs & Blogs</a><a href='https://www.progress.com/jp/blogs/create-windows-machine-builds-with-packer' class='is-active' data-culture='ja'>日本語 - Packer で Windows マシンビルドを作成する</a><a href='https://www.progress.com/es/blogs' data-culture='es'>English - Blogs</a><a href='https://www.progress.com/tw/blogs' data-culture='zh-TW'>English - Blogs</a><a href='https://www.progress.com/pt/blogs' data-culture='pt'>English - Blogs</a></nav><script type="text/javascript"> $(function(){$(".BlogsBar-Logo").hover(function(){$(".BlogsBar").addClass("is-logo-hovered")},function(){$(".BlogsBar").removeClass("is-logo-hovered")})});$(function(){var i=$(".PRGS-Bar"),r=$(".BlogPost-TopicsList"),n=$(".BlogsBar"),e=r.offset(),u=e.top+r.height(),t=$(".PRGS-Nav"),f=t.length>0?t.offset().top+t.outerHeight()+20:i.offset().top+i.outerHeight()+50;$(window).on("scroll resize",function(){var t=$(window).scrollTop(),i=$(window).width();i>1100?t>u+20&&!n.hasClass("visible")?(n.addClass("visible"),n.removeClass("hidden")):t<u+20&&n.hasClass("visible")&&(n.removeClass("visible"),n.removeClass("is-search-visible"),n.addClass("hidden")):t>f&&!n.hasClass("visible")?(n.addClass("visible"),n.removeClass("hidden")):t<f&&n.hasClass("visible")&&(n.removeClass("visible"),n.removeClass("is-search-visible"),n.addClass("hidden"))});$(".BlogsBar").on("click",".js-show-topics",function(n){n.preventDefault();$(this).parents(".BlogsBar").removeClass("showsearch");$(this).parents(".BlogsBar").toggleClass("showtopics")});$(".BlogsBar").on("click",".js-show-search",function(n){n.preventDefault();$(this).parents(".BlogsBar").removeClass("showtopics");$(this).parents(".BlogsBar").toggleClass("showsearch")})}) </script><script type="text/javascript"> (function(n){"use strict";var t=n(".MainNav");t.length===0&&(t=n(".BlogsBar"));var f=t.find("a[data-purpose='open-search']"),i=t.find("a[data-purpose='open-hamburger']"),e=n(".BlogsBar nav"),r=n(".MainNav-search");n(".BlogPost-StickySearch").length>0&&(r=n(".BlogPost-StickySearch"));var o=function(){t.find(".is-visible, .is-active, .is-expanded").removeClass("is-visible is-active is-expanded").blur();n(".is-temp").remove()},u=function(r,u){r.preventDefault();r.stopPropagation();var f=n(r.target),e=i.css("display")!=="none"?!0:!1;if(f.hasClass("is-active")){o();f.blur();u.find("input[type='search']").blur();return}t.find(".is-visible").not(u).removeClass("is-visible");t.find(".is-active").not(f).removeClass("is-active");f.addClass("is-active");u.addClass("is-visible");u.find("input[type='search']").focus()};f.on("click",function(n){u(n,r)});i.on("click",function(n){u(n,e)})})(jQuery,window,document) </script> <script type="text/javascript" defer src='https://d117h1jjiq768j.cloudfront.net/jsbundle/browsersession?v=vozraJzonkVtdA3cms_ZnGrOLXbKOtp1hJCbXtFgWV41'></script> </body> </html>