1.5. RHEL Image Builder を使用したクラウドイメージの準備とアップロード
RHEL Image Builder は、さまざまなクラウドプラットフォームですぐに使用できるカスタムシステムイメージを作成できます。カスタマイズした RHEL システムイメージをクラウドで使用するには、指定の出力タイプを使用して RHEL Image Builder でシステムイメージを作成し、イメージをアップロードするようにシステムを設定し、クラウドアカウントへイメージをアップロードします。RHEL Web コンソールの Image Builder
アプリケーションを介して、カスタマイズされたイメージクラウドをプッシュできます。これは、AWS や Microsoft Azure クラウドなど、Red Hat サポート対象のサービスプロバイダーの一部で利用できます。AWS Cloud AMI に直接イメージを作成して自動的にアップロードする および Microsoft Azure クラウドに直接 VHD イメージを作成して自動的にアップロードする を参照してください。
1.5.1. AMI イメージの準備と AWS へのアップロード
RHEL Image Builder を使用してカスタムイメージを作成し、そのイメージを手動または自動で AWS クラウドにアップロードできます。
1.5.1.1. AWS AMI イメージを手動でアップロードする準備
AWS AMI イメージをアップロードする前に、イメージをアップロードするためのシステムを設定する必要があります。
前提条件
- AWS IAM アカウントマネージャー にアクセスキー ID を設定している。
- 書き込み可能な S3 バケット を準備している。
手順
Python 3 および
pip
ツールをインストールします。# yum install python3 python3-pip
pip で
AWS コマンドラインツール
をインストールします。# pip3 install awscli
プロファイルを設定します。ターミナルで、認証情報、リージョン、および出力形式を指定するように求められます。
$ aws configure AWS Access Key ID [None]: AWS Secret Access Key [None]: Default region name [None]: Default output format [None]:
バケットの名前を定義し、バケットを作成します。
$ BUCKET=bucketname $ aws s3 mb s3://$BUCKET
bucketname
は、実際のバケット名に置き換えます。この名前は、グローバルで一意となるように指定する必要があります。上記で、バケットが作成されます。S3 バケットへのアクセス許可を付与するには、AWS Identity and Access Management (IAM) で
vmimport
S3 ロールを作成します (まだ作成していない場合)。信頼ポリシーの設定で、JSON 形式で
trust-policy.json
ファイルを作成します。以下に例を示します。{ "Version": "2022-10-17", "Statement": [{ "Effect": "Allow", "Principal": { "Service": "vmie.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:Externalid": "vmimport" } } }] }
ロールポリシーの設定を含む
role-policy.json
ファイルを JSON 形式で作成します。以下に例を示します。{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": ["s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket"], "Resource": ["arn:aws:s3:::%s", "arn:aws:s3:::%s/"] }, { "Effect": "Allow", "Action": ["ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe"], "Resource": "*" }] } $BUCKET $BUCKET
trust-policy.json
ファイルを使用して、Amazon Web Services アカウントのロールを作成します。$ aws iam create-role --role-name vmimport --assume-role-policy-document file://trust-policy.json
role-policy.json
ファイルを使用して、インラインポリシードキュメントを埋め込みます。$ aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://role-policy.json
1.5.1.2. CLI を使用して AMI イメージを AWS に手動でアップロードする
RHEL Image Builder を使用して ami
イメージをビルドし、CLI を使用して Amazon AWS Cloud サービスプロバイダーに直接手動でアップロードすることができます。
手順
テキストエディターを使用して、次の内容の設定ファイルを作成します。
provider = "aws" [settings] accessKeyID = "AWS_ACCESS_KEY_ID" secretAccessKey = "AWS_SECRET_ACCESS_KEY" bucket = "AWS_BUCKET" region = "AWS_REGION" key = "IMAGE_KEY"
フィールドの値を
accessKeyID
、secretAccessKey
、bucket
、およびregion
の認証情報に置き換えます。IMAGE_KEY
値は、EC2 にアップロードする仮想マシンイメージの名前です。- ファイルを CONFIGURATION-FILE.toml として保存し、テキストエディターを閉じます。
Compose を開始して AWS にアップロードします。
# composer-cli compose start blueprint-name image-type image-key configuration-file.toml
以下を置き換えます。
- blueprint-name は、作成したブループリントの名前に置き換えます。
-
image-type は、
ami
イメージタイプに置き換えます。 - image-key は、EC2 にアップロードする仮想マシンイメージの名前に置き換えます。
configuration-file.toml は、クラウドプロバイダーの設定ファイルの名前に置き換えます。
注記カスタマイズしたイメージの送信先となるバケットの正しい AWS Identity and Access Management (IAM) 設定が必要です。イメージをアップロードする前にバケットにポリシーを設定しておく必要があります。
イメージビルドのステータスを確認します。
# composer-cli compose status
イメージのアップロードプロセスが完了すると、"FINISHED" ステータスが表示されます。
検証
イメージのアップロードが成功したことを確認するには、以下を行います。
-
メニューで EC2 にアクセスし、AWS コンソールで正しいリージョンを選択します。イメージが正常にアップロードされたことを示すには、イメージが
available
ステータスになっている必要があります。 - Dashboard でイメージを選択し、 をクリックします。
1.5.1.3. イメージを作成して AWS Cloud AMI に自動的にアップロードする
RHEL Image Builder を使用して (.raw)
イメージを作成し、Upload to AWS チェックボックスをオンにして、作成した出力イメージを Amazon AWS Cloud AMI サービスプロバイダーに直接自動的にプッシュすることができます。
前提条件
-
root
またはwheel
グループでシステムにアクセスできる。 - ブラウザーで、RHEL Web コンソールの RHEL Image Builder インターフェイスを開いている。
- ブループリントを作成している。Web コンソールインターフェイスでのブループリントの作成 を参照してください。
- AWS IAM アカウントマネージャーにアクセスキー ID を設定している。
- 書き込み可能な S3 バケット を準備している。
手順
- RHEL Image Builder のダッシュボードで、以前に作成した ブループリント名 をクリックします。
- タブを選択します。
Create Image ウィンドウが開きます。
-
Type ドロップダウンメニューから、
Amazon Machine Image Disk (.raw)
を選択します。 - イメージを AWS Cloud にアップロードするには、Upload to AWS チェックボックスをオンして、 をクリックします。
AWS へのアクセスを認証するには、対応するフィールドに
AWS access key ID
およびAWS secret access key
を入力します。 をクリックします。注記新規アクセスキー ID を作成する場合にのみ、AWS シークレットアクセスキーを表示できます。秘密鍵が分からない場合は、新しいアクセスキー ID を生成します。
-
Image name
フィールドにイメージ名を、Amazon S3 bucket name
フィールドに Amazon バケット名を入力して、カスタマイズイメージを追加するバケットのAWS region
フィールドを入力します。 をクリックします。 情報を確認し、
をクリックします。必要に応じて、
をクリックして誤った情報を変更します。注記カスタマイズイメージを送信するバケットの正しい IAM 設定が必要です。この手順では IAM のインポートとエクスポートを使用するため、バケットにイメージをアップロードする前にバケットに ポリシー を設定する必要があります。詳細は、IAM ユーザーの必要なパーミッション を参照してください。
-
Type ドロップダウンメニューから、
右上のポップアップで、保存の進行状況が通知されます。イメージ作成の開始、イメージ作成の進捗、およびその後の AWS Cloud にアップロードに関する情報も通知されます。
プロセスが完了すると、Image build complete のステータスが表示されます。
ブラウザーで、Service→EC2 にアクセスします。
-
AWS コンソールのダッシュボードメニューで、正しいリージョン を選択します。イメージのステータスは、アップロードされていることを示す
Available
でなければなりません。 - AWS ダッシュボードでイメージを選択し、 をクリックします。
-
AWS コンソールのダッシュボードメニューで、正しいリージョン を選択します。イメージのステータスは、アップロードされていることを示す
- 新しいウィンドウが開きます。イメージを開始するために必要なリソースに応じて、インスタンスタイプを選択します。 をクリックします。
- インスタンスの開始の詳細を確認します。変更が必要な場合は、各セクションを編集できます。 をクリックします。
インスタンスを起動する前に、インスタンスにアクセスするための公開鍵を選択します。
既存のキーペアを使用するか、キーペアーを新規作成します。
次の手順に従って、EC2 で新規キーペアを作成し、新規インスタンスにアタッチします。
- ドロップダウンメニューリストから、Create a new key pair を選択します。
- 新しいキーペアに名前を入力します。新しいキーペアが生成されます。
- Download Key Pair をクリックして、新しいキーペアをローカルシステムに保存します。
Initializing と表示されるインスタンスのステータスを確認できます。
- インスタンスのステータスが running になると、 ボタンが有効になります。
- 優先する接続方法として スタンドアロン SSH クライアント を選択し、ターミナルを開きます。
秘密鍵を保存する場所で、SSH が機能するために鍵が公開されていることを確認してください。これには、以下のコマンドを実行します。
$ chmod 400 <_your-instance-name.pem_>
パブリック DNS を使用してインスタンスに接続します。
$ ssh -i <_your-instance-name.pem_> ec2-user@<_your-instance-IP-address_>
yes
と入力して、接続の続行を確定します。その結果、SSH 経由でインスタンスに接続されます。
検証
- SSH でインスタンスに接続している間にアクションが実行できるかどうかを確認します。
1.5.2. VHD イメージを準備して Microsoft Azure にアップロードする
RHEL Image Builder を使用すると、カスタムイメージを作成し、そのイメージを手動または自動で Microsoft Azure クラウドにアップロードできます。
1.5.2.1. Microsoft Azure VHD イメージを手動でアップロードする準備
Microsoft Azure
クラウドに手動でアップロードできる VHD イメージを作成するには、RHEL Image Builder を使用できます。
前提条件
- Microsoft Azure リソースグループとストレージアカウントがある。
-
Python がインストールされている。
AZ CLI
ツールは Python に依存しています。
手順
Microsoft リポジトリーキーをインポートします。
# rpm --import https://packages.microsoft.com/keys/microsoft.asc
次の情報を使用して、ローカルの
azure-cli.repo
リポジトリーを作成します。azure-cli.repo
リポジトリーを/etc/yum.repos.d/
に保存します。[azure-cli] name=Azure CLI baseurl=https://packages.microsoft.com/yumrepos/vscode enabled=1 gpgcheck=1 gpgkey=https://packages.microsoft.com/keys/microsoft.asc
Microsoft Azure CLI をインストールします。
# yumdownloader azure-cli # rpm -ivh --nodeps azure-cli-2.0.64-1.el7.x86_64.rpm
注記Microsoft Azure CLI パッケージのダウンロードバージョンは、現在利用可能なバージョンによって異なる場合があります。
Microsoft Azure CLI を実行します。
$ az login
ターミナルに次のメッセージが表示されます。
Note, we have launched a browser for you to login.For old experience with device code, use "az login --use-device-code
次に、ターミナルは、ログインできる場所から https://microsoft.com/devicelogin へのリンクのあるブラウザーを開きます。注記リモート (SSH) セッションを実行している場合、ログインページのリンクはブラウザーで開きません。この場合、リンクをブラウザーにコピーしてログインし、リモートセッションを認証できます。サインインするには、Web ブラウザーを使用してページ https://microsoft.com/devicelogin を開き、デバイスコードを入力して認証します。
Microsoft Azure のストレージアカウントのキーをリスト表示します。
$ az storage account keys list --resource-group <resource_group_name> --account-name <storage_account_name>
resource-group-name を Microsoft Azure リソースグループの名前に置き換え、storage-account-name を Microsoft Azure ストレージアカウントの名前に置き換えます。
注記次のコマンドを使用して、使用可能なリソースを一覧表示できます。
$ az resource list
上記のコマンドの出力にある値
key1
をメモします。ストレージコンテナーを作成します。
$ az storage container create --account-name <storage_account_name>\ --account-key <key1_value> --name <storage_account_name>
storage-account-name は、ストレージアカウント名に置き換えます。
関連情報
1.5.2.2. VHD イメージを Microsoft Azure クラウドに手動でアップロードする
カスタマイズした VHD イメージを作成したら、それを手動で Microsoft Azure クラウドにアップロードできます。
前提条件
- Microsoft Azure VHD イメージをアップロードするようにシステムを設定している。Microsoft Azure VHD イメージのアップロードの準備 を参照してください。
RHEL Image Builder で Microsoft Azure VHD イメージを作成している。
-
GUI で、
Azure Disk Image (.vhd)
イメージタイプを使用します。 -
CLI で、
vhd
出力タイプを使用します。
-
GUI で、
手順
イメージを Microsoft Azure にプッシュし、そこからインスタンスを作成します。
$ az storage blob upload --account-name <_account_name_> --container-name <_container_name_> --file <_image_-disk.vhd> --name <_image_-disk.vhd> --type page ...
Microsoft Azure Blob ストレージへのアップロードが完了したら、そこから Microsoft Azure イメージを作成します。
$ az image create --resource-group <_resource_group_name_> --name <_image_>-disk.vhd --os-type linux --location <_location_> --source https://$<_account_name_>.blob.core.windows.net/<_container_name_>/<_image_>-disk.vhd - Running ...
注記RHEL Image Builder で作成するイメージは、V1 = BIOS と V2 = UEFI の両方のインスタンスタイプをサポートするハイブリッドイメージを生成するため、
--hyper-v-generation
引数を指定できます。デフォルトのインスタンスタイプは V1 です。
検証
Microsoft Azure ポータル、または以下のようなコマンドを使用して、インスタンスを作成します。
$ az vm create --resource-group <_resource_group_name_> --location <_location_> --name <_vm_name_> --image <_image_>-disk.vhd --admin-username azure-user --generate-ssh-keys - Running ...
-
秘密鍵を使用して、SSH 経由で、作成されたインスタンスにアクセスします。
azure-user
としてログインします。このユーザー名は前の手順で設定したものです。
関連情報
-
Composing an image for the
.vhd
format fails (Red Hat ナレッジベース)
1.5.2.3. VHD イメージを作成して Microsoft Azure クラウドに自動的にアップロードする
RHEL Image Builder を使用して .vhd
イメージを作成すると、Microsoft Azure クラウドサービスプロバイダーの Blob Storage に自動的にアップロードされます。
前提条件
- システムへの root アクセス権があります。
- RHEL Web コンソールの RHEL Image Builder インターフェイスにアクセスできる。
- ブループリントを作成している。Web コンソールインターフェイスでの RHEL Image Builder ブループリントの作成 を参照してください。
- Microsoft ストレージアカウント が作成されました。
- 書き込み可能な Blob Storage が準備されました。
手順
- RHEL Image Builder ダッシュボードで、使用するブループリントを選択します。
- タブをクリックします。
.vhd
イメージを作成します。Create image ウィザードが開きます。
-
Type ドロップダウンメニューリストから
Microsoft Azure (.vhd)
を選択します。 - イメージを Microsoft Azure クラウドにアップロードするには、Upload to Azure チェックボックスをオンします。
- Image Size を入力し、 をクリックします。
-
Type ドロップダウンメニューリストから
Upload to Azure ページで、次の情報を入力します。
認証ページで、次のように入力します。
- Storage account の名前。これは、Microsoft Azure portal の Storage account ページにあります。
- Storage access key:これは、Access Key ストレージページにあります。
- をクリックします。
Authentication ページで、次のように入力します。
- イメージ名
- Storage container。これは、イメージのアップロード先の Blob コンテナーです。Microsoft Azure portal の Blob service セクションにあります。
- をクリックします。
Review ページで をクリックします。RHEL Image Builder が起動し、アップロードプロセスが開始します。
Microsoft Azure Cloud にプッシュしたイメージにアクセスします。
- Microsoft Azure ポータル にアクセスします。
- 検索バーに "storage account" と入力し、リストから Storage accounts をクリックします。
- 検索バーに "Images" と入力し、Services の下にある最初のエントリーを選択します。Image Dashboard にリダイレクトされます。
- ナビゲーションパネルで、Containers をクリックします。
-
作成したコンテナーを見つけます。コンテナー内には、RHEL Image Builder を使用して作成およびプッシュした
.vhd
ファイルがあります。
検証
仮想マシンイメージを作成して起動できることを確認します。
- 検索バーに images account と入力し、リストから Images をクリックします。
- をクリックします。
- ドロップダウンリストから、前に使用したリソースグループを選択します。
- イメージの名前を入力します。
- OS type で Linux を選択します。
- VM generation で Gen 2 を選択します。
- Storage Blob で をクリックし、VHD ファイルに到達するまでストレージアカウントとコンテナーをクリックします。
- ページの最後にある Select をクリックします。
- Account Type を選択します (例: Standard SSD)。
- をクリックし、 をクリックします。イメージが作成されるまでしばらく待機します。
仮想マシンを起動するには、次の手順に従います。
- をクリックします。
- ヘッダーのメニューバーから をクリックします。
- 仮想マシンの名前を入力します。
- Size セクションと Administrator account セクションに入力します。
デプロイメントが完了したら、仮想マシン名をクリックしてインスタンスのパブリック IP アドレスを取得し、SSH を使用して接続します。
- ターミナルを開いて SSH 接続を作成し、仮想マシンに接続します。
1.5.2.4. VMDK イメージのアップロードと vSphere での RHEL 仮想マシンの作成
RHEL Image Builder を使用すると、カスタマイズした VMware vSphere システムイメージを Open virtualization format (.ova
) または Virtual disk (.vmdk
) 形式で作成できます。これらのイメージを VMware vSphere クライアントにアップロードできます。govc import.vmdk
CLI ツールを使用して、.vmdk
または .ova
イメージを VMware vSphere にアップロードできます。作成した vmdk
には、インストール済みの cloud-init
パッケージが含まれています。このパッケージを使用して、たとえばユーザーデータを使用してユーザーをプロビジョニングできます。
VMware vSphere GUI を使用した vmdk
イメージのアップロードはサポートされていません。
前提条件
- ユーザー名とパスワードをカスタマイズしたブループリントを作成している。
-
RHEL Image Builder を使用して VMware vSphere イメージを
.ova
または.vmdk
形式で作成し、ホストシステムにダウンロードしている。 -
govc
CLI ツールをインストールして設定し、import.vmdk
コマンドが使用可能である。
手順
GOVC 環境変数を使用して、ユーザー環境で次の値を設定します。
GOVC_URL GOVC_DATACENTER GOVC_FOLDER GOVC_DATASTORE GOVC_RESOURCE_POOL GOVC_NETWORK
- VMware vSphere イメージをダウンロードしたディレクトリーに移動します。
次の手順に従って、vSphere で VMware vSphere イメージを起動します。
VMware vSphere イメージを vSphere にインポートします。
$ govc import.vmdk ./composer-api.vmdk foldername
.ova
形式の場合:$ govc import.ova ./composer-api.ova foldername
電源をオンにせずに vSphere に仮想マシンを作成します。
govc vm.create \ -net.adapter=vmxnet3 \ -m=4096 -c=2 -g=rhel8_64Guest \ -firmware=efi -disk=”foldername/composer-api.vmdk” \ -disk.controller=scsi -on=false \ vmname
.ova
形式の場合は、行-firmware=efi -disk=”foldername/composer-api.vmdk” \
を `-firmware=efi -disk=”foldername/composer-api.ova” \ に置き換えます。仮想マシンの電源をオンにします。
govc vm.power -on vmname
仮想マシンの IP アドレスを取得します。
govc vm.ip vmname
ブループリントで指定したユーザー名とパスワードで、SSH を使用して、仮想マシンにログインします。
$ ssh admin@<_ip_address_of_the_vm_>
注記govc datastore.upload
コマンドを使用してローカルホストから宛先に.vmdk
イメージをコピーしても、コピーして作成したイメージを使用することはできません。vSphere GUI にはimport.vmdk
コマンドを使用するオプションがないため、vSphere GUI は直接アップロードをサポートしません。そのため、.vmdk
イメージを vSphere GUI から使用することはできません。
1.5.2.5. Image Builder GUI を使用して VMDK イメージを作成し、vSphere に自動的にアップロードする
RHEL Image Builder GUI ツールを使用して VMware イメージをビルドし、そのイメージを vSphere インスタンスに直接自動的にプッシュできます。これにより、イメージファイルをダウンロードして手動でプッシュする必要がなくなります。作成した vmdk
には、インストール済みの cloud-init
パッケージが含まれています。このパッケージを使用して、たとえばユーザーデータを使用してユーザーをプロビジョニングできます。RHEL Image Builder を使用して .vmdk
イメージをビルドし、vSphere インスタンスサービスプロバイダーに直接プッシュするには、次の手順に従います。
前提条件
-
root
またはweldr
グループのメンバーである。 - ブラウザーで https://localhost:9090/RHEL Image Builder を開いている。
- ブループリントを作成している。Web コンソールインターフェイスでの RHEL Image Builder ブループリントの作成 を参照してください。
- vSphere アカウント がある。
手順
- 作成したブループリントの タブをクリックします。
イメージタイプウィンドウが開きます。
Image type ウィンドウで、以下を実行します。
- ドロップダウンメニューから、タイプ VMware vSphere (.vmdk) を選択します。
- Upload to VMware チェックボックスをチェックして、イメージを vSphere にアップロードします。
- オプション: インスタンス化するイメージのサイズを設定します。最小のデフォルトサイズは 2 GB です。
- をクリックします。
Upload to VMware ウィンドウの Authentication の下に以下の情報を入力します。
- ユーザー名: vSphere アカウントのユーザー名。
- パスワード: vSphere アカウントのパスワード。
Upload to VMware ウィンドウの Destination の下に、イメージのアップロード先に関する以下の情報を入力します。
- Image name: イメージの名前。
- Host: VMware vSphere の URL。
- Cluster: クラスターの名前。
- Data center:データセンターの名前。
- Data store: データストアの名前。
- Next をクリックします。
確認 ウィンドウで、イメージ作成の詳細を確認し、 をクリックします。
RHEL Image Builder は、RHEL vSphere イメージの Compose をキューに追加し、指定した vSphere インスタンスのクラスターにイメージを作成してアップロードします。
注記イメージビルドおよびアップロードプロセスの完了には数分かかります。
プロセスが完了すると、Image build complete のステータスが表示されます。
検証
イメージステータスのアップロードが正常に完了したら、アップロードしたイメージから仮想マシン (VM) を作成し、ログインできます。改善点を報告する場合は、以下のように行います。
- VMware vSphere クライアントにアクセスします。
- 指定した vSphere インスタンスのクラスターでイメージを検索します。
- アップロードしたイメージを選択します。
- 選択したイメージを右クリックします。
New Virtual Machine
をクリックします。New Virtual Machine ウィンドウが開きます。
New Virtual Machine ウィンドウで、以下の詳細を指定します。
-
New Virtual Machine
を選択します。 - 仮想マシンの名前とフォルダーを選択します。
- コンピューターリソースの選択: この操作の宛先コンピューターリソースを選択します
- ストレージを選択:たとえば、NFS-Node1 を選択します。
- 互換性を選択:イメージは BIOS のみである必要があります。
- ゲストオペレーティングシステムを選択します。たとえば、Linux および Red Hat Fedora (64-bit) を選択します。
- ハードウェアのカスタマイズ:仮想マシンを作成する場合は、右上の Device Configuration ボタンでデフォルトの New Hard Disk を削除し、ドロップダウンを使用して Existing Hard Disk ディスクイメージを選択します。
- 完了する準備ができました:詳細を確認し、Finish をクリックしてイメージを作成します。
-
VMs タブに移動します。
- リストから、作成した仮想マシンを選択します。
- パネルから Start ボタンをクリックします。仮想マシンイメージを読み込み中であることを示す新しいウィンドウが表示されます。
- ブループリント用に作成した認証情報を使用してログインします。
ブループリントに追加したパッケージがインストールされていることを確認できます。以下に例を示します。
$ rpm -qa | grep firefox
1.5.3. カスタム GCE イメージの準備と GCP へのアップロードする
RHEL Image Builder を使用してカスタムイメージを作成し、そのイメージを Oracle Cloud Infrastructure (OCI) インスタンスに自動的にアップロードできます。
1.5.3.1. RHEL Image Builder を使用した GCP へのイメージのアップロード
RHEL Image Builder を使用すると、gce
イメージをビルドし、ユーザーまたは GCP サービスアカウントの認証情報を指定して、gce
イメージを GCP 環境に直接アップロードできます。
1.5.3.1.1. CLI を使用して gce イメージを設定して GCP にアップロードする
RHEL Image Builder CLI を使用して、gce
イメージを GCP にアップロードするための認証情報を含む設定ファイルを設定します。
イメージが起動しなくなるため、gce
イメージを GCP に手動でインポートすることはできません。アップロードするには、gcloud
または RHEL Image Builder を使用する必要があります。
前提条件
イメージを GCP にアップロードするための有効な Google アカウントと認証情報がある。認証情報は、ユーザーアカウントまたはサービスアカウントから取得できます。認証情報に関連付けられたアカウントには、少なくとも次の IAM ロールが割り当てられている必要があります。
-
roles/storage.admin
- ストレージオブジェクトの作成と削除 -
roles/compute.storageAdmin
- 仮想マシンイメージの Compute Engine へのインポート
-
- 既存の GCP バケットがあります。
手順
テキストエディターを使用して、次の内容の
gcp-config.toml
設定ファイルを作成します。provider = "gcp" [settings] bucket = "GCP_BUCKET" region = "GCP_STORAGE_REGION" object = "OBJECT_KEY" credentials = "GCP_CREDENTIALS"
-
GCP_BUCKET
は既存のバケットを指します。アップロード中のイメージの中間ストレージオブジェクトを格納するために使用されます。 -
GCP_STORAGE_REGION
は、通常の Google ストレージリージョンであり、デュアルまたはマルチリージョンです。 -
OBJECT_KEY
は、中間ストレージオブジェクトの名前です。アップロード前に存在してはならず、アップロードプロセスが完了すると削除されます。オブジェクト名が.tar.gz
で終わらない場合、拡張子がオブジェクト名に自動的に追加されます。 GCP_CREDENTIALS
は、GCP からダウンロードした認証情報 JSON ファイルのBase64
エンコードされたスキームです。認証情報によって、GCP がイメージをアップロードするプロジェクトが決まります。注記GCP での認証に別のメカニズムを使用する場合、
gcp-config.toml
ファイルでのGCP_CREDENTIALS
の指定は任意です。他の認証方法は、Authenticating with GCP を参照してください。
-
GCP からダウンロードした JSON ファイルから
GCP_CREDENTIALS
を取得します。$ sudo base64 -w 0 cee-gcp-nasa-476a1fa485b7.json
追加のイメージ名とクラウドプロバイダープロファイルを使用して Compose を作成します。
$ sudo composer-cli compose start BLUEPRINT-NAME gce IMAGE_KEY gcp-config.toml
イメージビルド、アップロード、およびクラウド登録プロセスは、完了に最大 10 分かかる場合があります。
検証
イメージのステータスが FINISHED であることを確認します。
$ sudo composer-cli compose status
1.5.3.1.2. RHEL Image Builder によるさまざまな GCP 認証情報の認証順序の並べ替え
RHEL Image Builder でいくつかの異なる種類の認証情報を使用して、GCP で認証できます。複数の認証情報セットを使用して GCP で認証するように RHEL Image Builder が設定されている場合、次の優先順位で認証情報が使用されます。
-
設定ファイルで
composer-cli
コマンドで指定された認証情報。 -
osbuild-composer
ワーカー設定で設定された認証情報。 次の方法で認証方法を自動的に見つけようとする、
Google GCP SDK
ライブラリーからのApplication Default Credentials
。- GOOGLE_APPLICATION_CREDENTIALS 環境変数が設定されている場合、Application Default Credentials は、変数が指すファイルから認証情報を読み込んで使用しようとします。
Application Default Credentials は、コードを実行しているリソースに関連付けられたサービスアカウントを使用して認証を試みます。たとえば、Google Compute Engine 仮想マシンです。
注記イメージをアップロードする GCP プロジェクトを決定するには、GCP 認証情報を使用する必要があります。したがって、すべてのイメージを同じ GCP プロジェクトにアップロードする場合を除き、
composer-cli
コマンドを使用してgcp-config.toml
設定ファイルに認証情報を指定する必要があります。
1.5.3.1.2.1. composer-cli コマンドで GCP 認証情報を指定する
アップロードターゲット設定の gcp-config.toml
ファイルで、GCP 認証情報を指定できます。時間を節約するために、Google アカウント認証情報の JSON ファイルの Base64
エンコードスキームを使用します。
手順
GOOGLE_APPLICATION_CREDENTIALS
環境変数に保存されているパスを使用して、Google アカウント認証情報ファイルのエンコードされたコンテンツを取得するには、次のコマンドを実行します。$ base64 -w 0 "${GOOGLE_APPLICATION_CREDENTIALS}"
アップロードターゲット設定の
gcp-config.toml
ファイルで、認証情報を設定します。provider = "gcp" [settings] provider = "gcp" [settings] credentials = "GCP_CREDENTIALS"
1.5.3.1.2.2. osbuild-composer ワーカー設定で認証情報を指定する
すべてのイメージビルドでグローバルに GCP に使用される GCP 認証認証情報を設定できます。このようにして、イメージを同じ GCP プロジェクトにインポートする場合、GCP へのすべてのイメージのアップロードに同じ認証情報を使用できます。
手順
/etc/osbuild-worker/osbuild-worker.toml
ワーカー設定で、次の認証情報の値を設定します。[gcp] credentials = "PATH_TO_GCP_ACCOUNT_CREDENTIALS"
1.5.4. カスタムイメージの準備と OCI への直接アップロード
RHEL Image Builder を使用してカスタムイメージを作成し、そのイメージを Oracle Cloud Infrastructure (OCI) インスタンスに自動的にアップロードできます。
1.5.4.1. カスタムイメージを作成して OCI に自動的にアップロードする
RHEL Image Builder を使用すると、カスタマイズしたイメージをビルドし、そのイメージを Oracle Cloud Infrastructure (OCI) インスタンスに直接自動的にプッシュできます。その後、OCI ダッシュボードからイメージインスタンスを開始できます。
前提条件
-
システムに対して
root
またはweldr
グループのユーザーアクセスがある。 - Oracle Cloud アカウントを持っている。
- 管理者によって OCI ポリシー でセキュリティーアクセスが許可されている必要があります。
-
選択した
OCI_REGION
に OCI バケットを作成しました。
手順
- ブラウザーで Web コンソールの RHEL Image Builder インターフェイスを開きます。
- Create blueprint ウィザードが開きます。 をクリックします。
- Details ページで、ブループリントの名前を入力し、必要に応じて説明を入力します。 をクリックします。
- Packages ページで、イメージに含めるコンポーネントとパッケージを選択します。 をクリックします。
- Customizations ページで、ブループリントに必要なカスタマイズを設定します。 をクリックします。
- Review ページで をクリックします。
- イメージを作成するには、Create image ウィザードが開きます。 をクリックします。
Image output ページで、次の手順を実行します。
- "Select a blueprint" ドロップダウンメニューから、必要なブループリントを選択します。
-
"Image output type" ドロップダウンメニューから、
Oracle Cloud Infrastructure (.qcow2)
を選択します。 - イメージを OCI にアップロードするには、Upload OCI チェックボックスをオンにします。
- "image size" を入力します。 をクリックします。
Upload to OCI - Authentication ページで、次の必須の詳細を入力します。
- ユーザー OCID: ユーザーの詳細を表示するページのコンソールで確認できます。
- 秘密鍵
Upload to OCI - Destination ページで、次の必須の詳細を入力し、 をクリックします。
- イメージ名: アップロードするイメージの名前。
- OCI バケット
- バケット namespace
- バケットリージョン
- バケットコンパートメント
- バケットテナンシー
- ウィザードの詳細を確認し、 をクリックします。
RHEL Image Builder が、RHEL .qcow2
イメージの Compose をキューに追加します。
検証
-
OCI ダッシュボード
カスタムイメージにアクセスします。 - イメージに指定した Compartment を選択し、Import image テーブルでイメージを見つけます。
- イメージ名をクリックして、イメージ情報を確認します。
1.5.5. カスタマイズした QCOW2 イメージを準備して OpenStack に直接アップロードする
RHEL Image Builder を使用してカスタムの .qcow2
イメージを作成し、OpenStack クラウドデプロイメントに手動でアップロードできます。
1.5.5.1. OpenStack への QCOW2 イメージのアップロード
RHEL Image Builder ツールを使用すると、OpenStack クラウドデプロイメントにアップロードし、そこでインスタンスを起動するのに適した、カスタマイズした .qcow2
イメージを作成できます。RHEL Image Builder は QCOW2 フォーマットでイメージを作成しますが、OpenStack に固有の変更がさらに加えられています。
RHEL Image Builder を OpenStack イメージタイプで使用して作成する一般的な QCOW2
イメージタイプの出力フォーマットを間違えないでください。これも QCOW2 フォーマットですが、OpenStack に固有の変更がさらに含まれています。
前提条件
- ブループリントを作成している。
手順
QCOW2
イメージの作成を開始します。# composer-cli compose start blueprint_name openstack
ビルドの状態を確認します。
# composer-cli compose status
イメージのビルドが完了したら、イメージをダウンロードできます。
QCOW2
イメージをダウンロードします。# composer-cli compose image UUID
- OpenStack ダッシュボードにアクセスし、 をクリックします。
-
左側のメニューで、
Admin
タブを選択します。 System Panel
からImage
をクリックします。Create An Image
ウィザードが開きます。Create An Image
ウィザードで、以下を行います。- イメージの名前を入力します。
-
Browse
をクリックしてQCOW2
イメージをアップロードします。 -
Format
ドロップダウンリストから、QCOW2 - QEMU Emulator
を選択します。
左側のメニューで
Project
タブを選択します。-
Compute
メニューからInstances
を選択します。 インスタンスの
Launch Instance
が開きます。-
Details
ページで、インスタンスの名前を入力します。 をクリックします。 -
Source
ページで、アップロードしたイメージの名前を選択します。 をクリックします。 Flavor
ページで、ニーズに最適なマシンリソースを選択します。 をクリックします。
-
-
イメージから任意のメカニズム (CLI または OpenStack Web UI) を使用して、イメージインスタンスを実行できます。秘密鍵を使用して、SSH 経由で、作成されたインスタンスにアクセスします。
cloud-user
としてログインします。
1.5.6. カスタマイズした RHEL イメージを準備して Alibaba Cloud にアップロードする
RHEL Image Builder で作成した、カスタマイズしれた .ami
イメージを Alibaba Cloud にアップロードできます。
1.5.6.1. カスタマイズされた RHEL イメージを Alibaba Cloud にアップロードする準備
カスタマイズされた RHEL イメージを Alibaba Cloud にデプロイするには、まずカスタマイズされたイメージを検証する必要があります。Alibaba Cloud は、イメージを使用する前に特定の要件を満たすようにカスタムイメージを要求するため、イメージが正常に起動するように特別な設定が必要になります。
RHEL Image Builder は、Alibaba の要件に準拠したイメージを生成します。ただし、Red Hat は、Alibaba image_check ツール を使用して、イメージのフォーマット準拠を確認することも推奨します。
前提条件
- RHEL Image Builder を使用して Alibaba イメージを作成している。
手順
- Alibaba の image_check ツールを使用して、チェックするイメージを含むシステムに接続します。
image_check ツールをダウンロードします。
$ curl -O https://docs-aliyun.cn-hangzhou.oss.aliyun-inc.com/assets/attach/73848/cn_zh/1557459863884/image_check
イメージのコンプライアンスツールのファイルパーミッションを変更します。
# chmod +x image_check
次のコマンドを実行して、イメージコンプライアンスツールのチェックを起動します。
# ./image_check
このツールは、システム設定を検証し、画面に表示されるレポートを生成します。image_check ツールは、イメージのコンプライアンスツールが実行されているフォルダーにこのレポートを保存します。
トラブルシューティング
いずれかの 検出項目 が失敗した場合は、ターミナルの指示に従って修正してください。
1.5.6.2. カスタマイズされた RHEL イメージを Alibaba にアップロードする
RHEL Image Builder で作成した、カスタマイズした AMI
イメージを Object Storage Service (OSS) にアップロードできます。
前提条件
- Alibaba イメージのアップロードを設定している。Alibaba にイメージをアップロードするための準備 を参照してください。
-
RHEL Image Builder を使用して
ami
イメージを作成している。 - バケットがある。Creating a bucket を参照してください。
- アクティブな Alibaba アカウント がある。
- OSS をアクティベートしている。
手順
- OSS コンソール にログインします。
- 左側のバケットメニューで、イメージをアップロードするバケットを選択します。
- 右上のメニューで、Files タブをクリックします。
- アップロード先:これを選択すると、現在 のディレクトリーまたは 指定した ディレクトリーにファイルをアップロードします。
- ファイル ACL:アップロードしたファイルのパーミッションのタイプを選択します。
- をクリックします。
- OSS コンソールにアップロードするイメージを選択します。
- をクリックします。
1.5.6.3. Alibaba Cloud へのイメージのインポート
RHEL Image Builder で作成した、カスタマイズした Alibaba RHEL イメージを Elastic Compute Service (ECS) にインポートするには、次の手順に従います。
前提条件
- Alibaba イメージのアップロードを設定している。Alibaba にイメージをアップロードするための準備 を参照してください。
-
RHEL Image Builder を使用して
ami
イメージを作成している。 - バケットがある。Creating a bucket を参照してください。
- アクティブな Alibaba アカウント がある。
- OSS をアクティベートしている。
- イメージを OSS (Object Storage Service) にアップロードしている。Alibaba へのイメージのアップロード を参照してください。
手順
ECS コンソール にログインします。
- 左側のメニューで、 をクリックします。
- 右上にある をクリックします。ダイアログウィンドウが開きます。
イメージが含まれる正しいリージョンを設定していることを確認します。以下の情報を入力します。
-
OSS Object Address
:OSS Object Address の取得方法を参照してください。 -
Image Name
-
オペレーティングシステム
-
System Disk Size
-
システムアーキテクチャー
-
プラットフォーム
:Red Hat
-
オプション: 以下の情報を指定します。
-
Image Format
- アップロードしたイメージの形式に応じてqcow2
またはami
。 -
Image Description
Add Images of Data Disks
アドレスは、OSS 管理コンソールで確認できます。左側のメニューで必要なバケットを選択した後:
-
-
Files
セクションを選択します。 適切なイメージの右側にある Details リンクをクリックします。
画面右側にウィンドウが表示され、イメージの詳細が表示されます。
OSS
オブジェクトアドレスはURL
ボックスにあります。- 注記
インポートプロセスの時間は、イメージのサイズによって異なります。
カスタマイズされたイメージが ECS
コンソールにインポートされます。
1.5.6.4. Alibaba Cloud を使用したカスタマイズされた RHEL イメージのインスタンスの作成
Alibaba ECS コンソールを使用して、カスタマイズされた RHEL イメージのインスタンスを作成できます。
前提条件
- OSS をアクティベートして、カスタムイメージをアップロードしている。
- イメージを ECS コンソールに正常にインポートしている。Alibaba へのイメージのインポート を参照してください。
手順
- ECS コンソール にログインします。
- 左側のメニューで、インスタンス を選択します。
- 右上隅にある インスタンスの作成 をクリックします。新しいウィンドウにリダイレクトされます。
- 必要な情報をすべて完了します。詳細は、Creating an instance by using the wizard を参照してください。
Create Instance をクリックして、順番を確認します。
注記サブスクリプションによっては、Create Instance ではなく Create Order が表示されます。
その結果、アクティブなインスタンスを Alibaba ECS Console
からデプロイする準備が整いました。