6/23(現地時間)に Packer の最新安定版 version 0.8 が公開されました。例によって、日本語参考訳です。内容の把握程度にどうぞ。
原文:
Packer 0.8 – HashiCorp
https://hashicorp.com/blog/packer-0-8.html
■ Packer 0.8
私達は Packer 0.8 をリリースします。Packer は仮想マシンイメージやコンテナなど、デプロイ可能なアーティファクト(訳者注;成果物の意味、抽象化された仮想イメージに対する呼称)を構築するためのツールです。
Packer 0.7 を公開してからほぼ一年ですが(マイナーリリースはありました)、ようやくメジャーリリースの時だと決めました。Packer 0.8 は非常に大規模なリリースであり、1ダース以上もの新機能を備えています。コミュニティにおいて 100 を越えるプルリクエストを行い、かつ HasihCorp の社員でもある Chris Bednarsky と Clint Shryock には、リリースに向けて専念してくれて、非常に感謝しています。
Packer 0.8 はすぐにダウンロードして使えるだけでなく、Atlas の内部で稼働中です。
Packer 0.8 の機能面でのハイライトは次の通りです:
- WinRM と Windows プロビジョナ
- Windows AWS イメージ
- Bastion Host 等(ステップサーバ的な意味)へ SSH エージェントのフォワーディング
- OpenStack Identity v3 等
- ローカルでのシェルスクリプトによるプロビジョニング
- 多くの細かな改良
■ WinRM と Windows プロビジョナ( Provisioners )
Packer は SSH に替わり WinRM 接続を新たにサポートしました。つまり Packer は SSH サーバ(現行の Windows マシンでは時々動かないことがあります)をインストールすることなく Windows の設定をネイティブに行えます。
WinRM の設定は簡単です:
{ "builders": [{ ... "communicator": "winrm", "winrm_username": "Administrator" }] }
他にも WinRM のポートや WinRM パスワード等を設定できます。しかし、多くのビルダーは自動的にこれらの情報を表示してくれるでしょう。
また、Packer 0.8 は3つの新しい Windows 独自のプロビジョナを備えました。それは、PowerShell、Windows シェル(cmd)、windows-restart です。これらのプロビジョナは WinRM による接続を必要としています。
PowerShell プロビジョナを使えば PowerShell スクリプトを実行できるようになり、Windows シェル・プロビジョナはバッチ・スクリプトを実行します。Windows restart プロビジョナは再起動の実施と、マシンが完全に再起動完了するまで待機することです。
■ Windows AMS Images
Packer 向けの Amazon ビルダ は、Windows イメージの作成をサポートしました。以前のバージョンで Packer がサポートしていたのは Linux 向けだけでした。
Windows AWS イメージの構築はシームレスなものであり、何ら新しい設定を必要としません。必要なのはソース・イメージとして Windows AMI を指定するだけであり、Packer が残りの処理を行います。これは WinRM コミュニケータと一緒に使うようになるでしょう。
Windows AMI を構築する有効なテンプレートの例は、次の通りです:
{ "builders": [{ "type": "amazon-ebs", "region": "us-east-1", "source_ami": "ami-c01102a8", "instance_type": "m3.medium", "ami_name": "windows-ami {{timestamp}}", "user_data_file": "{{template_dir}}/setup_winrm.txt", "communicator": "winrm", "winrm_username": "Administrator" }], "provisioners": [ { "type": "powershell", "inline": [ "dir c:\\" ] } ] }
■踏み台サーバ(bastion hosts)等への SSH エージェント転送
Packer の SSH は、多くの機能改善を施されました。Packer はデフォルトで SSH エージェント転送を行い、踏み台サーバに接続できるだけでなく、この SSH 機能の無効化もできます。
SSH エージェント転送には何ら新しい設定は不要です。Packer は、Packer が動いているマシン上で SSH エージェントの動作を検出すると、それを自動的に転送します。同様に SSH エージェント転送の無効化もできます。
踏み台サーバを通すことにより、Packer は踏み台サーバ間とのプライベート・ネットワークを通してイメージを作成します。この機能は長らく非常に求められていたものですが、設定するのは簡単になりました:
{ "builders": [{ ..., "ssh_bastion_host": "1.2.3.4", "ssh_bastion_username": "foo", "ssh_bastion_private_key_file": "{{template_dir}}/bastion.key" }], "provisioners": [ { "type": "powershell", "inline": [ "dir c:\\" ] } ] }
そして最後に、使う必要がなければ SSH を完全に無効化できます。「”communicator”: “none”」を指定します。このとき、コミュニケータだけでなく、他のプロビジョナも動作しなくなるので注意が必要です。
■ OpenStack Identity v3 等
OpenStack ビルダは新機能をサポートしました。初心者から上級者に至るまでユーザが使いやすくなるよう調整されたものです。最も注目の機能は identity API v3 のサポートです。
identity v3 の追加だけでなく、多くの改良が施されました:
- flavor やイメージでは UUID だけでなく、人間の馴染みやすい名前での指定ができます
- Availability zone のサポート
- OpenStack クラスタが拡張をサポートするのであれば、ディスク破損を避けるためにスナップショットの前にインスタンスを Packer が停止します
- User data をサポート
等の機能があります。
■ ローカル・シェル・プロビジョニング
Packer は「shell-local」プロビジョナを使い、ローカルのシェルスクリプトをプロビジョニング処理中に実行できるようになりました。使うには、次のようにします:
{ "provisioners": [{ "type": "shell-local", "command": "echo hello!" }] }
これは Atlas でも利用可能です! Atlas は Packer を仮想マシンを使わずに実行するとき、調整した任意のスクリプトが実行できます。
■ 多くの小さな改良
前述の主要機能に加え、Packer 0.8 には目立った機能があります:
- リモートマシンからファイルをダウンロードするファイル・プロビジョナ(file provisioner)のサポート
- 圧縮ポスト・プロセッサのサポートにより、複数の圧縮アルゴリズムのサポートと、可能であれば並列にファイルを圧縮
- ISO や大きなファイルのダウンロードにおけるレジューム機能をサポート。Ctrl-C で中断すると Packer にキャッシュされ、次回実行時にダウンロードが再開
- WinRM など全てのビルダが SSH オプションをサポートしますが、各々のビルダでは SSH のオプションが異なります
- Docker ビルダはコンテナへの SSH をサポート
- 新しい設定機能が利用可能:「build_name」「build_type」「template_dir」
■ まとめ
Packer 0.8 は多くの機能を備えた大規模リリースです。このリリースにおけるハイライトは、Windows のサポートに関する全面的な改善です。Packer は Windows イメージに関する構築を、外部プラグインを使わずに行えるようになります。同様にファイルダウンロード時のレジューム(再開)機能も、巨大な ISO イメージを扱いがちの Windows における手助けとなるでしょう。
とりわけ Windows に関しては、Packer 0.8 において全面的にビルダの改良を行いました。OpenStack も書き直されていますし、大きなバグが目立った Amazon ビルダも修正し、DigitalOcean ビルダはより安定性が高まりました、等々の改良を行っています。
Packer をダウンロードするか、Atlas をお使いください。
原文:https://hashicorp.com/blog/packer-0-8.html