ようへいの日々精進XP

よかろうもん

Packer で Windows Server の EC2 AMI を作ってみたメモ

tl;dr

Windows Server の初期設定を出来るだけワンタッチ(スクリプト一発とか)で行う方法を試行錯誤していて、ついでに Packer で AMI も作ってみようと思って試したメモ。

あくまでもメモ。


教材

github.com


memo

作成される AMI の概要

  • Python をインストールする(msi パッケージのインストール試した)
  • pyWin32 インストール(exe パッケージのインストールを試した)
  • Ansible で構成管理出来るように設定(PowerShell スクリプトの実行を試した)

インスタンス起動時に指定するユーザーデータ

  • タイムゾーンJST に変更
  • ネットワークプロファイルを Public から Private に変更
<powershell>
tzutil.exe /s "Tokyo Standard Time"
Set-NetConnectionProfile -NetworkCategory Private
</powershell>

出来た AMI を Serverspec でテスト

% tree spec
spec
├── common
│   └── common_spec.rb
└── spec_helper.rb

1 directory, 2 files

tips

  • msi パッケージのインストール完了を待つ場合
Start-Process "C:\download_files\python-2.7.11.amd64.msi" /quiet -Wait

Start-Process コマンドレットを使って -Wait オプションを利用する。

  • Administrator のパスワードをリセットする
    "provisioners": [
        {
            "type": "powershell",
            "inline": [
                "C:\\PROGRA~1\\Amazon\\Ec2ConfigService\\Ec2Config.exe -sysprep"
            ]
        }
    ]

上記のように Packer の Provisioner において Ec2Config を -sysprep オプション付きで実行する。詳細は以下のドキュメントが詳しい。

docs.aws.amazon.com

docs.aws.amazon.com

参考


以上

  • Packer 奥深い
  • Windows も頑張れば GUI にアクセスすることなく構築、運用は出来そう
  • PowerShell