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

投稿者: Dan Franciscus 投稿日: 2018年12月3

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

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

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.
著者が作成したブログ

関連タグ

関連記事

MOVEit 2018 の REST API で PowerShell を使う
MOVEit の利用形態として、MOVEit コンソールや Web インタフェースからログインして日々の管理業務を行ったり、1回限りのワークフローを設定して操作する作業は理にかなっており、首尾よくいきます。一方、MOVEit Automation の自動化を活用したいケースもあります。
Prefooter Dots
Subscribe Icon

Latest Stories in Your Inbox

Subscribe to get all the news, info and tutorials you need to build better business apps and sites

The specified form no longer exists or is currently unpublished.