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

12月 06, 2018 セキュリティとコンプライアンス

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&amp;lt;/plaintext&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/password&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;username&amp;gt;vagrant&amp;lt;/username&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;enabled&amp;gt;true&amp;lt;/enabled&amp;gt;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;lt;/autologon&amp;gt;&amp;lt;/pre&amp;gt; &amp;lt;p&amp;gt;また、&amp;lt;strong&amp;gt;autounattend.xml&amp;lt;/strong&amp;gt; には、Windows OS のインストール後の最初のログオン時に実行するコマンドのセクションもあります。バッチスクリプトと PowerShell スクリプトの両方がサポートされており、様々な設定が可能です。上のビルダーの例では、Windows のアップデートをVMにインストールする &amp;lt;strong&amp;gt;win-updates.ps1&amp;lt;/strong&amp;gt; という PowerShell スクリプトが実行されるよう設定しています。&amp;lt;/p&amp;gt; &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;autounattend.xml&amp;lt;/strong&amp;gt; ファイルで様々な設定が可能なことは上述の通りですが、250ラインに及ぶ詳細なファイルは、&amp;lt;a href="https://github.com/StefanScherer/packer-windows/blob/my/answer_files/10/Autounattend.xml" rel="noopener" target="_blank"&amp;gt;ここ&amp;lt;/a&amp;gt;からアクセスできます。&amp;lt;/p&amp;gt; &amp;lt;h2&amp;gt;コミュニケーター&amp;lt;/h2&amp;gt; &amp;lt;p&amp;gt;Packer が VM と通信する一般的な方法は SSH です。OpenSSH を使用することも可能ですが、Windows&amp;nbsp;でより一般的なリモート通信方法は WinRM です。先に示したPacker テンプレートのビルダー部分にあるように、Packer テンプレートで WinRM 接続して認証するよう設定できます。&amp;lt;/p&amp;gt; &amp;lt;pre&amp;gt;"winrm_password": "vagrant",&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;"winrm_timeout": "",&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;"winrm_username": "vagrant"&amp;lt;/pre&amp;gt; &amp;lt;p&amp;gt;Windows の場合、WinRM はデフォルトで、ドメイン外の2台のコンピュータ間でSSL暗号化を要求します。Packer のホストとビルドVM間の通信を可能にする最も簡単な方法(安全は保証されていないものの)は、暗号化されていないトラフィック(HTTP)を許可することです。それを行う Scherer 氏の&amp;nbsp;Github スクリプトは、&amp;lt;a href="https://github.com/StefanScherer/packer-windows/blob/my/scripts/enable-winrm.ps1" rel="noopener" target="_blank" data-sf-ec-immutable=""&amp;gt;ここ&amp;lt;/a&amp;gt;からアクセスできます。&amp;lt;/p&amp;gt; &amp;lt;h2&amp;gt;ISOファイルの使用&amp;lt;/h2&amp;gt; &amp;lt;p&amp;gt;Windows イメージを作成する基本的な方法は、Windows&amp;nbsp;インストールISOを使用することです。テストのためには、Microsoft のトライアルISOを使用することができます。または、組織での使用のために提供されるボリュームライセンスISOを使うこともできます。Packer テンプレートで、ISOファイル、チェックサム、チェックサムタイプの3つのフィールドを設定します(実行時にコマンドパッカービルドに情報をパスすることもできます)。Scherer 氏の Windows 10 のテンプレートでは、ビルドセクションでユーザー変数を使用し、変数セクションで実際の値を設定しています。&amp;lt;/p&amp;gt; &amp;lt;p&amp;gt;ビルドセクション:&amp;lt;/p&amp;gt; &amp;lt;pre&amp;gt;"iso_checksum": "",&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;"iso_checksum_type": "",&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;"iso_url": "",&amp;lt;/pre&amp;gt; &amp;lt;p&amp;gt;変数セクション:&amp;lt;/p&amp;gt; &amp;lt;pre&amp;gt;"iso_checksum": "27e4feb9102f7f2b21ebdb364587902a70842fb550204019d1a14b120918e455",&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;"iso_checksum_type": "sha256",&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;"iso_url": "https://software-download.microsoft.com/download/pr/17134.1.180410-1804.rs4_release_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso"&amp;lt;/pre&amp;gt; &amp;lt;h2&amp;gt;デモ&amp;lt;/h2&amp;gt; &amp;lt;p&amp;gt;簡単なデモンストレーションを表示するために、Scherer 氏のレポジトリをローカルにダウンロードしてパッカービルドを実行します。筆者(dan) のWindows 10イメージがビルドされ、virtualbox を作成し、Windows 10&amp;nbsp;のトライアルISOをダウンロードしてデフォルト設定を行います。下のアウトプットで、ISOがダウンロードされ、スクリプトがVMのフロッピードライブにコピーされているのがわかります。&amp;lt;/p&amp;gt; &amp;lt;pre&amp;gt;Dans-MacBook-Pro:packer-windows-my dan$ ~/packer build -only=virtualbox-iso windows_10.json&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;virtualbox-iso output will be in this color.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;==&amp;gt; virtualbox-iso: Downloading or copying ISO&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;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&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Download progress: 90%&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Download progress: 91%&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Download progress: 92%&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Download progress: 94%&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Download progress: 95%&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Download progress: 96%&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Download progress: 97%&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Download progress: 99%&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Download progress: 100%&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Download progress: 100%&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;==&amp;gt; virtualbox-iso: Creating floppy disk...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Copying files flatly from floppy_files&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Copying file: ./answer_files/10/Autounattend.xml&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Copying file: ./floppy/WindowsPowershell.lnk&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Copying file: ./floppy/PinTo10.exe&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Copying file: ./scripts/fixnetwork.ps1&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Copying file: ./scripts/disable-screensaver.ps1&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Copying file: ./scripts/disable-winrm.ps1&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Copying file: ./scripts/enable-winrm.ps1&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Copying file: ./scripts/microsoft-updates.bat&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Copying file: ./scripts/win-updates.ps1&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Done copying files from floppy_files&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Collecting paths from floppy_dirs&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Resulting paths from floppy_dirs : []&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Done copying paths from floppy_dirs&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;==&amp;gt; virtualbox-iso: Creating virtual machine...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;==&amp;gt; virtualbox-iso: Creating hard drive...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;==&amp;gt; virtualbox-iso: Attaching floppy disk...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;==&amp;gt; virtualbox-iso: Creating forwarded port mapping for communicator (SSH, WinRM, etc) (host port 4194)&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;==&amp;gt; virtualbox-iso: Executing custom VBoxManage commands...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Executing: modifyvm windows_10 --memory 2048&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: Executing: modifyvm windows_10 --cpus 2&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;==&amp;gt; virtualbox-iso: Starting the virtual machine...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;==&amp;gt; virtualbox-iso: Waiting 6m0s for boot...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;==&amp;gt; virtualbox-iso: Typing the boot command...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;==&amp;gt; virtualbox-iso: Waiting for WinRM to become available...&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; virtualbox-iso: WinRM connected.&amp;lt;/pre&amp;gt; &amp;lt;h2&amp;gt;まとめ&amp;lt;/h2&amp;gt; &amp;lt;p&amp;gt;Packerのイメージビルドで主にサポートされているOSは Linux ですが、Windows もしっかりサポートされています。Packer で、&amp;rdquo;unattended&amp;rdquo; 手法を使ってクリーンな Windows イメージビルドを作成できます。&amp;lt;/p&amp;gt;&lt;/plaintext&gt;&lt;/password&gt;&lt;/autologon&gt;&lt;/pre&gt;</plaintext></password></autologon></pre> </div> <span> <div class="BlogPost-Tags u-mb4"> <a href="/jp/blogs/tag/sysadmin">システム管理者</a> </div> </span> <div class="BlogPost-Author"> <amp-img width="170" height="170" src="https://d117h1jjiq768j.cloudfront.net/images/default-source/authors/dfranciscusheadshotf052fe95f8434f69963c5a9aa775930b.jpg?sfvrsn=334653e_2" layout="responsive" title="dfranciscusheadshotf052fe95f8434f69963c5a9aa775930b" alt=""></amp-img> <div class="txt"> <h2>Dan Franciscus</h2> <p>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> <a class="BlogPost-Next" href='/jp/blogs/how-to-search-windows-event-logs-across-hundreds-of-servers'> <span class="txt">Read next </span> <span class="ttl">何百ものサーバーからの Windows イベントログを検索する方法</span> </a> <script type="application/ld+json">{"mainEntityOfPage":{"@type":"WebPage","@id":"https://www.progress.com/amp/jp/create-windows-machine-builds-with-packer/dWU5d09jQTFGZndVVnJod2xERzk5TENYb204PQ2"},"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","url":"https://www.progress.com/jp/blogs/author/dan-franciscus"},"publisher":{"@type":"Organization","name":"Progress","logo":{"@type":"ImageObject","url":"https://d3ba5g9yhie26y.cloudfront.net/img/progress-logo-reversed.png","width":"600","height":"60"}},"@context":"http://schema.org","@type":"NewsArticle"}</script> </main> </div> <!-- .col-9 --> <aside class="col-3"> <div class="BlogPost-Sidebar"> <h5 class="u-fs16 u-mb2 f-ttu">Topics</h5> <div class="BlogPost-TopicsList"> <ul class="List BlogPost-Topics"> <li ><a href="/jp/blogs/application-development">アプリケーション開発</a></li> <li ><a href="/jp/blogs/digital-experience">デジタルエクスペリエンス</a></li> <li ><a href="/jp/blogs/company-and-community">Company and Community </a></li> <li ><a href="/jp/blogs/security-and-compliance">セキュリティとコンプライアンス</a></li> </ul> </div> <div> <form method="GET" action="https://www.progress.com/blogs/search" target="_top" custom-validation-reporting="show-all-on-submit" class="SearchForm"> <input type="text" placeholder="search the blogs..." name="q" id="tbSearch" pattern="^((?![<>])[\s\S])*$" required> <button type="submit" class="icon-search"> <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.0" id="Layer_1" x="0px" y="0px" width="15px" height="15px" viewBox="0 0 512 512" enable-background="new 0 0 512 512" xml:space="preserve"> <path d="M500.422,432.303l-113.655-96.418c18.467-31.061,29.271-67.182,29.271-105.863c0-114.701-93.302-208.019-208.019-208.019 S0,115.32,0,230.022s93.302,208.019,208.019,208.019c52.456,0,100.294-19.664,136.922-51.809l113.161,95.999 c6.137,5.21,13.648,7.767,21.128,7.767c9.301,0,18.507-3.932,24.996-11.555C515.924,464.65,514.23,444.002,500.422,432.303z M208.019,372.579c-78.599,0-142.558-63.959-142.558-142.558S129.421,87.464,208.019,87.464s142.558,63.959,142.558,142.558 S286.618,372.579,208.019,372.579z" /> </svg> </button> </form> </div> <div class="SubscribeBox"> <span class="icon-subscribe"></span> <h3>Latest updates in your inbox</h3> <a target="_blank" href="/blogs/subscribe" class="Btn Btn--s u-db">Subscribe</a> </div> </div> </aside> <!-- .col-3 --> </div> <!-- .row --> </div> <!-- .container --> </section> <footer> <footer class="PRGS-Footer" data-prgs-footer-version="1.4.37" 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 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 © 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 version="1.1" x="0px" y="0px" width="24" height="24" viewBox="0 0 512 512" role="img"><title>Facebook</title><path d="m307.91372,29.22911c28.66308,0.60985 50.61779,1.21971 67.23628,1.6771l0,74.85944l-41.46999,0c0,0 -42.53724,-3.65912 -42.53724,35.37147l0,53.81951l79.5858,0l-9.91011,80.04319l-69.67569,0l0,207.80736l-83.09245,0l0,-207.80736l-71.20032,0l0,-80.04319l71.20032,0l0,-61.29021c0,-0.15246 -3.81158,-106.72425 99.86341,-104.4373z"></path></svg> </a><a href="https://twitter.com/progresssw" title="twitter" target="_blank" aria-label="twitter (opens in new window)"><svg version="1.1" x="0px" y="0px" width="24" height="24" viewBox="0 0 512 512" role="img"><title>Twitter</title><path d="M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"></path></svg> </a><a href="https://www.youtube.com/user/ProgressSW" title="youtube" target="_blank" aria-label="youtube (opens in new window)"><svg version="1.1" x="0px" y="0px" width="24" height="24" viewBox="0 0 512 512" role="img"><title>Youtube</title><path d="M506.887,153.632c0,0-5.003-35.283-20.354-50.82c-19.469-20.393-41.293-20.494-51.301-21.687 c-71.647-5.179-179.121-5.179-179.121-5.179h-0.223c0,0-107.472,0-179.121,5.179c-10.008,1.194-31.824,1.295-51.301,21.687 c-15.351,15.537-20.346,50.82-20.346,50.82S0,195.065,0,236.497v38.843c0,41.433,5.12,82.865,5.12,82.865 s4.995,35.283,20.346,50.82c19.476,20.393,45.06,19.748,56.455,21.885C122.883,434.839,256,436.054,256,436.054 s107.585-0.162,179.232-5.341c10.008-1.194,31.831-1.295,51.301-21.687c15.351-15.537,20.354-50.82,20.354-50.82 S512,316.773,512,275.341v-38.843C512,195.065,506.887,153.632,506.887,153.632z M203.87,322.913v-144.36l137.342,72.18 L203.87,322.913z"></path></svg> </a><a href="https://www.instagram.com/progress_sw_" title="instagram" target="_blank" aria-label="instagram (opens in new window)"><svg version="1.0" x="0px" y="0px" width="24" height="24" viewBox="0 0 30 30" role="img"><title>Instagram</title><circle cx="15" cy="15" r="4"></circle><path d="M19.999 3h-10C6.14 3 3 6.141 3 10.001v10C3 23.86 6.141 27 10.001 27h10C23.86 27 27 23.859 27 19.999v-10C27 6.14 23.859 3 19.999 3zM15 21c-3.309 0-6-2.691-6-6s2.691-6 6-6 6 2.691 6 6-2.691 6-6 6zm7-12a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"></path></svg> </a><a href="https://www.linkedin.com/company/progress-software" title="linkedin" target="_blank" aria-label="linkedin (opens in new window)"><svg version="1.1" x="0px" y="0px" width="24" height="24" viewBox="0 0 512 512" role="img"><title>Linkedin</title><path d="M77,445.67h78.54v-265H77v265Zm39-385.76c-26.18,0-45.41,16.56-45.41,40.6s19.23,41.14,45.41,41.14c26.71,0,45.41-17.1,45.41-41.14S142.77,59.91,116.06,59.91ZM367.69,174.25c-35.8,0-62.51,18.7-84.95,40.07h-2.14l-5.34-33.66H211.15v265h78.54v-179c17.1-16.56,29.38-25.64,49.15-25.64,22.44,0,32.59,11.75,32.59,50.22V445.67H450V281.1C450,214.85,425.39,174.25,367.69,174.25Z"></path></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> </footer> </body> </html>