[OCI]PackerとVirtualBoxを使用して、Oracle Cloud Infrastructureに独自のイメージを持ち込む (2020/12/29)

PackerとVirtualBoxを使用して、Oracle Cloud Infrastructureに独自のイメージを持ち込む (2020/12/29)

https://blogs.oracle.com/cloud-infrastructure/using-packer-and-virtualbox-to-bring-your-own-image-into-oracle-cloud-infrastructure
投稿者:Zeke Kaufman | Solution Architect


Oracle Cloud Infrastructure(OCI)は、ほとんどの大企業や顧客のニーズに合わせて、さまざまなOSを提供しています。
しかし、企業によっては、基盤となるインフラストラクチャにネイティブではない特定のオペレーティング・システムや
特別にカスタマイズされたオペレーティング・システムが必要になる場合があります。
オンプレミスからクラウドへの移行を検討しているが、ネイティブ・プラットフォーム・イメージを使用できない厳しいオペレーティング・システム要件がある場合でも、
OCIに独自のイメージ(BYOI)を持ち込むことができます。

このブログでは、ソリューションアーキテクトやクラウドエンジニアに、Oracle CloudにBYOIを自動化して簡単に設定できる方法を提供しています。
仮想化環境としてVirtualBoxを使用し、重労働を行うためにPackerを使用します。
1つのコマンドを実行するだけで、任意のLinuxディストリビューションのインストール・メディアから、OCIで実行されている完全にカスタマイズされたインスタンスに移行することができます。

この方法は、ネイティブ プラットフォーム イメージが OS プラットフォームの要件や Linux カーネルのバージョンなどの厳しい要件を満たさない場合にのみ使用してください。
ネイティブプラットフォームイメージを使用すると、常により良いサポートとパフォーマンスの向上を得ることができます。

ここでは、独自にカスタマイズしたイメージを OCI にインポートする方法を見てみましょう。

前提条件


  • Oracle Cloudアカウント。アカウントをお持ちでない場合は、Oracle Cloud Free Tierアカウントにサインアップできます。
  • VirtualBox のインストール。このチュートリアルでは、v6.1.16を使用します。
  • Packerのインストール。このチュートリアルでは v1.5.4 を使用しています。
  • GitHub リポジトリをクローンします。

また、VirtualBox でクラウド プロファイルを作成し、OCI アカウントとリンクさせる必要があります。こちらの技術概要に手順が記載されています。

Packerテンプレート


Packer の詳細な説明は、このブログ記事の範囲外です。
このチュートリアルでは、テンプレートとも呼ばれる Packer 設定ファイルは、Packer の様々なコンポーネントを設定するキーのセットを持つ JSON オブジェクトです。
私たちのPackerファイルには、2つの主要なコンポーネントがあります。

  • ビルダー。
    ビルダーセクションには、VirtualBox の OS の作成、インストール、設定を担当するすべてのコードが含まれています。
    ビルダーには、ディスク サイズ、メモリ、仮想マシン(VM)のシェイプなどの情報が含まれています。
    この例では、ビルダーセクションには Linux ISO ディストリビューションメディアへのリンクと、OS のインストールを自動化するための事前設定ファイルへのポインタも含まれています。
  • プロビジョナー。
    プロビジョナーセクションには、Packer が他の OS の設定を実行したり、追加のソフトウェアをインストールしたりするために使用するプロビジョナーのリストが含まれています。
    Packer には多くの種類のプロビジョナーがあります。この例では、一連のスクリプトを実行できる「シェル」タイプを使用しています。
    OCI.shスクリプトは、OCI内でイメージを互換性のあるものにするために必要な設定を行います。
    cleanup.sh はイメージのクリーンアップとアップロードのためのサイズ縮小に関連した基本的なアクションを実行します。

このコードをワークフローのテンプレートとして使用する場合は、プロビジョナーセクションに別のスクリプトを挿入してください。
追加されたスクリプトは、テストしたい追加のソフトウェアをダウンロードしてインストールする責任があります。

イメージを構築


イメージをビルドするには、GitHub repo のトップレベルディレクトリにある packer build コマンドを実行します。

packer build <json_template>

ビルド処理が完了したら、次のコマンドを発行します。
Oracle Cloud Object Storage にイメージをアップロードし、カスタムイメージを作成し、インスタンスをデプロイします。
以下の引数を環境に固有の値に置き換えてください。

VBoxManage export debian-10.6-1299708... \
--output OCI:// \
--cloud 0
\ --vmname debian-10.6_packer \
--cloudprofile DEFAULT \
--cloudbucket vbox-upload \
--cloudlaunchmode PARAVIRTUALIZED
\ --cloudshape VM.Standard2.1
\ --clouddomain IYfK:US-ASHBURN-AD-1
\ --clouddisksize 120
\ --cloudocivcn ocid1.vcn.oc1.iad.amaaa... \
--cloudocisubnet ocid1.subnet.oc1.iad.aaaaa... \
--cloudkeepobject true
\ --cloudlaunchinstance true
\ --cloudpublicip true


今、OCIでテストを開始するときの部分を開始します。
インスタンスが起動されたテナントにログインし、そのパブリックIPアドレスを取得します。
これで、パブリックIPとpreseedファイルで指定したユーザ名とパスワードを使って、インスタンスにSSH接続できるようになりました。


ssh opc@203.0.113.13

その他の考慮事項


このワークフローをお使いの環境で使用する前に、他にも考慮すべき点がいくつかあります。

  • カスタムイメージが「Importing Custom Linux Images」のドキュメントで指定されている要件に従っていることを確認してください。
  • もしあなたの会社がVM環境の構築や管理にVagrantボックスを既に使用している場合は、PackerテンプレートにVagrant post-processor を追加することができます。
    Vagrant Box を持っていると、既存のカスタムイメージの修正やメンテナンスの負担が軽減されます。

最後に


Oracle Cloud Infrastructure内でのアプリケーションのテストが成功したことを願っています。
テスト対象のアプリケーションが顧客のいるビジネス製品であれば、Oracle Marketplaceへの追加を検討してみてください。
Marketplaceにリストを作成することで、潜在的な顧客ベースが広がり、ビジネス・オファリングの露出度が高まります。
アプリケーションをテストするためにこの記事で説明したのと同じ自動化されたワークフローは、
アプリケーションの将来のバージョンをテストしたり、別のオペレーティング・システムをテストしたりするために改良することができます。
DevOps開発フレームワークに接続すると、CI/CDを使用してMarketplaceのリスティングを最新バージョンの製品で維持するのは簡単なことです。

コメント

このブログの人気の投稿

Oracle RACによるメンテナンスのためのドレインとアプリケーション・コンティニュイティの仕組み (2023/11/01)

Oracle Cloud Infrastructure Secure Desktopsを発表: デスクトップ仮想化のためのOracleのクラウドネイティブ・サービス (2023/06/28)

新しいOracle Container Engine for Kubernetesの機能強化により、大規模なKubernetesがさらに簡単になりました (2023/03/20)