<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1678611822423757&amp;ev=PageView&amp;noscript=1">

Packer でマシンイメージをAWSにインポート

Dan Franciscus| December 03 2018

| IT insights, AWS, Packer, クラウド

import-machine-images-into-aws-with-packe

Amazon Web Services(AWS)は依然として最もよく使われているクラウドプラットフォームです。Packer は、ビルドを AWS にインポートしてAmazon Machine ImagesAMI)に変換する優れた統合機能を提供します。

Hashicorp の Packer は、複数のオペレーティングシステムプラットフォーム用のマシンイメージを作成し、複数の仮想化およびクラウドプラットフォームでそれらを使えるようにするユニークな機能を備えています。Packer は、どのプロバイダのサーバーが稼動している環境でもOSを一貫性を保って管理できる有用なツールです。

Packer の使い方

実際に Packer と AWS を使って AMI を最初からビルドすることもできますが、他のツールを使って、例えば Vagrant/Virtualbox のマシンイメージをビルドし、その後、OVFイメージを、Packer ポストプロセッサを使ってエクスポートして、最終的に AMI に変換することもできます。業務で AWS 以外のプラットフォームを使用している場合には、後者が適切でしょう。

Packer では、OVF AWS で使うのに、まず OVF を S3バケットにアップロードし、AWS API を呼び出して AMI に変換します。

関連ブログ: クラウド用語集: 知っておくべき用語

AWSの前提条件

AWS には、Packer が OVA をアップロードして変換するのに必要な前提条件があります。詳細はこのブログの範囲外ですが、S3バケットの設定、サービスロールの作成、ポリシーの設定などで、AWS の経験があればそれほど難しくありません。

Packer のAWS設定

Packer でビルドし、AWS にエクスポートするためのいくつかの設定オプションがあります。設定オプションは、Packer のリファレンスページにあります。必要なオプションは、AWS アクセスキー、秘密キー、リージョン、S3バケット名です。API を呼び出したら、その残りの作業は Packer がバックグラウンドで行います。

さらに、AMI ディスクリプション、ライセンスタイプ、AMI 名などを設定したり、AMI にタグを追加したりすることができます。

Packer テンプレートの例

下に Packer テンプレートの例を示します。ソースの OVF ファイルは、"box.ovf" です。ビルダーのタイプは "virtualbox-ovf" で、既存の ovf ファイルを使用する必要があります。このテンプレートには Packer プロビジョナーは設定されていませんが、構成の設定やソフトウェアのインストールなど、OVF に何らかのプロビジョニングを行うことも可能です。ビルダーは実際は別の ovf ファイルにエクスポートされます。その後、”amazon-import” ポストプロセッサが実行され、エクスポートされた ovf が S3バケットに追加されてから、AMI に変換されます。



    "builders": [

    {

        "type": "virtualbox-ovf",

        "source_path": "box.ovf",

        "ssh_username": "username",

        "ssh_password": "password",

        "format": "ova",

        "shutdown_command": "echo 'packer' | sudo -S shutdown -P now"

    }

    ],

    "post-processors": [

    {

        "type": "amazon-import",

        "access_key": "MyAccessKey",

        "secret_key": "THISISSECRET",

        "region": "us-east-1",

        "s3_bucket_name": "test.domain.com"

        }

    ]

}

これを見てわかるように、AWS アクセスキー、秘密キー、リージョン、S3バケット名が設定されています。アップロードして AWS AMI を作成するには、このシンプルな Packer テンプレートで十分です。

次が、packer build で実行した結果です。

PS C:\temp\aws-test> packer build  .\centos.json

virtualbox-ovf output will be in this color.

 

==> virtualbox-ovf: Downloading or copying Guest additions

    virtualbox-ovf: Downloading or copying: file:///C:/Program%20Files/Oracle/VirtualBox/VBoxGuestAdditions.iso

==> virtualbox-ovf: Downloading or copying OVF/OVA

    virtualbox-ovf: Downloading or copying: file:///C:/temp/aws-test/box.ovf

==> virtualbox-ovf: Importing VM: C:/temp/aws-test/box.ovf

==> virtualbox-ovf: Creating forwarded port mapping for communicator (SSH, WinRM, etc) (host port 4085)

==> virtualbox-ovf: Starting the virtual machine...

==> virtualbox-ovf: Waiting 10s for boot...

==> virtualbox-ovf: Typing the boot command...

==> virtualbox-ovf: Waiting for SSH to become available...

==> virtualbox-ovf: Connected to SSH!

==> virtualbox-ovf: Uploading VirtualBox version info (5.2.8)

==> virtualbox-ovf: Uploading VirtualBox guest additions ISO...

==> virtualbox-ovf: Gracefully halting virtual machine...

==> virtualbox-ovf: Preparing to export machine...

    virtualbox-ovf: Deleting forwarded port mapping for the communicator (SSH, WinRM, etc) (host port 4085)

==> virtualbox-ovf: Exporting virtual machine...

    virtualbox-ovf: Executing: export packer-virtualbox-ovf-1535560689 --output output-virtualbox-ovf\packer-virtualbox-ovf-1535560689.ova

==> virtualbox-ovf: Deregistering and deleting imported VM...

==> virtualbox-ovf: Running post-processor: amazon-import

    virtualbox-ovf (amazon-import): Uploading output-virtualbox-ovf\packer-virtualbox-ovf-1535560689.ova to s3://test.domain.com/packer-import-1535560689.ova

    virtualbox-ovf (amazon-import): Completed upload of output-virtualbox-ovf\packer-virtualbox-ovf-1535560689.ova to s3://test.domain.com /packer-import-1535560689.ova

    virtualbox-ovf (amazon-import): Started import of s3://test.domain.com /packer-import-1535560689.ova, task id import-ami-007c6ea5927dab5a7

    virtualbox-ovf (amazon-import): Waiting for task import-ami-007c6ea5927dab5a7 to complete (may take a while)

    virtualbox-ovf (amazon-import): Complete

 PowerShell を使って自動化する方法

Topics: IT insights, AWS, Packer, クラウド

Default HTML block

コメントをどうぞ

メールアドレスは公開されません。アスタリスクマーク*のついたフィールドは必須項目です。

THIS POST WAS WRITTEN BY Dan Franciscus

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.

無料試用版

無料試用版をお気軽にお試しください。

無料試用版を試す

コンタクト

ご質問、ご意見をお寄せください。

連絡先

ブログの定期メール便

ブログを定期的にメール配信いたします。