Alibaba Cloud Linuxイメージは、VHDおよびQCOW2形式で利用でき、組み込みのcloud-initを備えています。 オンプレミス仮想マシンでイメージを使用できます。 カーネルベースの仮想マシン (KVM) のみがサポートされています。 このトピックでは、オンプレミス仮想マシンでAlibaba Cloud Linux 3イメージとAlibaba Cloud Linux 2イメージを使用する方法について説明します。
背景情報
このトピックでは、オンプレミスオペレーティングシステムはAnolis OSです。 Alibaba Cloud LinuxイメージはKVMの作成に使用され、cloud-initはKVMのシステム設定の初期化に使用されます。NoCloudデータソースは、オンプレミスの構成ファイルを作成するために使用されます。 構成ファイルが仮想ディスクとしてKVMにアタッチされた後、KVMを起動できます。 Anolis OSをダウンロードするには、Anolis OSダウンロードページに移動します。このトピックは、KVMに精通しているユーザーを対象としています。
手順1: Alibaba Cloud Linuxイメージをオンプレミス仮想マシンにダウンロードする
次のURLから、VHDまたはQCOW2形式のAlibaba Cloud Linuxイメージをオンプレミス仮想マシンにダウンロードできます。
Alibaba Cloud Linux 3: Alibaba Cloud Linux 3オンプレミスイメージ
Alibaba Cloud Linux 2: Alibaba Cloud Linux 2オンプレミスイメージ
ステップ2: オンプレミス仮想マシンからseed.imgブートイメージを取得する
Alibaba Cloud Linuxイメージは、仮想マシンを直接起動できません。 seed.imgブートイメージと、ブートイメージのネットワーク、アカウント、YUMリポジトリなどの情報を設定する必要があります。
ほとんどの場合、画像の名前はseed.imgです。 画像の名前は変更できますが、画像の名前は変更しないことをお勧めします。
seed.imgブートイメージには、cloud-initを起動するために必要な設定ファイルのみが含まれています。 イメージにはAlibaba Cloud Linuxシステムファイルが含まれていません。
seed.imgブートイメージを取得するには、次のいずれかの方法を使用します。
方法1: seed.imgブートイメージをダウンロードする
Alibaba Cloud Linux 3およびAlibaba Cloud Linux 2は、seed.imgブートイメージファイルを提供します。 seed.imgブートイメージは、次のURLからダウンロードできます。
Alibaba Cloud Linux 3: Alibaba Cloud Linux 3オンプレミスイメージ
Alibaba Cloud Linux 2: Alibaba Cloud Linux 2オンプレミスイメージ
説明イメージ内の設定は変更できません。 この場合、画像は特定のシナリオに適していない可能性があります。 画像を使用する前に、画像に精通していることを確認してください。
方法2: NoCloudデータソースを使用してseed.imgブートイメージを手動で生成する
説明NoCloudデータソースは、オンプレミス環境で設定ファイルを提供できるcloud-initデータソースです。 ファイルは、仮想マシンで読み取り、使用できます。
オンプレミスディレクトリに、という名前の2つの構成ファイルを作成します。
meta-data
とuser-data
.2つのファイルは、
seed.img
ブートイメージの一部として含まれています。 仮想マシンが起動すると、cloud-initは設定ファイルを読み取り、設定ファイルに基づいて仮想マシンを初期化します。シード
という名前のディレクトリを作成します。ディレクトリに移動します。sudo mkdir seed sudo cd seed/
という名前の構成ファイルを作成します。
メタデータ
.次の例は、設定ファイルの内容を示しています。 仮想マシンの名前は
alinux-host
です。 ビジネス要件に基づいて名前を変更できます。#cloud-config #vim:syntax=yaml local-hostname: alinux-host
という名前の構成ファイルを作成します。
user-data
.次の例は、設定ファイルの内容を示しています。 コンテンツを変更できます。
Alibaba Cloud Linux 3
#cloud-config #vim:syntax=yaml # Create an account named alinux and grant the account the permissions to run sudo commands. users: - default - name: alinux sudo: ['ALL=(ALL) ALL'] plain_text_passwd: aliyun lock_passwd: false # Create a YUM repository for Alibaba Cloud Linux 3. yum_repos: alinux3-module: name: alinux3-module baseurl: https://mirrors.aliyun.com/alinux/$releasever/module/$basearch/ enabled: 1 gpgcheck: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-updates: name: alinux3-updates baseurl: https://mirrors.aliyun.com/alinux/$releasever/updates/$basearch/ enabled: 1 gpgcheck: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-plus: name: alinux3-plus baseurl: https://mirrors.aliyun.com/alinux/$releasever/plus/$basearch/ enabled: 1 gpgcheck: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-powertools: name: alinux3-powertools baseurl: https://mirrors.aliyun.com/alinux/$releasever/powertools/$basearch/ gpgcheck: 1 enabled: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3 alinux3-os: name: alinux3-os baseurl: https://mirrors.aliyun.com/alinux/$releasever/os/$basearch/ gpgcheck: 1 enabled: 1 gpgkey: https://mirrors.aliyun.com/alinux/$releasever/RPM-GPG-KEY-ALINUX-3
Alibaba Cloud Linux 2
#cloud-config #vim:syntax=yaml # Create an account named alinux and grant the account the permissions to run sudo commands. users: - default - name: alinux sudo: ['ALL=(ALL) ALL'] plain_text_passwd: aliyun lock_passwd: false # Create a YUM repository for Alibaba Cloud Linux 2. yum_repos: base: baseurl: https://mirrors.aliyun.com/alinux/$releasever/os/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Base - mirrors.aliyun.com updates: baseurl: https://mirrors.aliyun.com/alinux/$releasever/updates/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Updates - mirrors.aliyun.com extras: baseurl: https://mirrors.aliyun.com/alinux/$releasever/extras/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Extras - mirrors.aliyun.com plus: baseurl: https://mirrors.aliyun.com/alinux/$releasever/plus/$basearch/ enabled: true gpgcheck: true gpgkey: https://mirrors.aliyun.com/alinux/RPM-GPG-KEY-ALIYUN name: Aliyun Linux - $releasever - Plus - mirrors.aliyun.com
(条件付きで必要) Alibaba Cloud Linux 3オペレーティングシステムを使用している場合は、epel-testingリポジトリを有効にします。
epel-testing.repoファイルを開きます。
sudo vim /etc/yum.repos.d/epel-testing.repo
iキーを押して編集モードに入り、
enabled=0
をenabled=1
に置き換えます。[epel-testing] name=Extra Packages for Enterprise Linux 8 - Testing - $basearch baseurl=http://mirrors.cloud.aliyuncs.com/epel/testing/8/Everything/$basearch enabled=0 gpgcheck=1 countme=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
Esc
キーを押し、:wqと入力して変更を保存します。
次のコマンドを実行して、
cloud-utils
ソフトウェアパッケージをインストールします。sudo yum install -y cloud-utils
次のコマンドを実行して、
seed.img
ブートイメージを生成します。sudo cloud-localds seed.img user-data meta-data
ステップ3: オンプレミス仮想マシンを起動する
KVMを起動するには、次のいずれかの方法を使用します。
libvirtを使用したKVMの起動
オンプレミスのコンピューターでXML形式の構成ファイルを作成します。
次の例は、設定ファイルの内容を示しています。 ファイル名は、Alibaba Cloud Linux 3では
alinux3.xml
、Alibaba Cloud Linux 2ではalinux2.xml
です。 ビジネス要件に基づいて構成ファイルの内容を変更できます。Alibaba Cloud Linux 3
<domain type='kvm'> <name>alinux3</name> <memory>1048576</memory><!-- Set the memory size to 1 GB. --> <vcpu>1</vcpu> cpu mode='host-passthrough'><!-- Start the KVM on the server of the corresponding architecture. --> </cpu> <os> <type arch='x86_64'>hvm</type><!-- If the architecture of the server is ARM 64-bit, set arch to aarch64. --> <boot dev='hd'/> </os> <clock sync="localtime"/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/qemu-kvm</emulator><!-- Configure a KVM path based on the operating system. For example, the KVM path for Ubuntu is /usr/bin/kvm. --> <disk type='file' device='disk'><!-- Specify the type parameter based on the image format. Set type to qcow2 if the image is in the QCOW2 format, and set type to vpc if the image is in the VHD format. --> <driver name='qemu' type='qcow2' cache='none' dataplane='on' io='native'/> <!-- If you want to create a snapshot in the QCOW2 format, disable dataplane. --> <source file='path'/> <!-- Enter the absolute path of the Alibaba Cloud Linux 3 image. --> <target dev='vda' bus='virtio'/> </disk> <!-- Add information about the seed.img boot image. --> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/path/to/your/seed.img'/> <!-- Enter the absolute path of the seed.img boot image. --> <target dev='vdb' bus='virtio'/> </disk> <interface type='network'> <source network='default'/> <model type='virtio'/> </interface> <console type='pty'> <target type='virtio' port='0'/> </console> <video> <model type='cirrus' vram='9216' heads='1'/> <alias name='video0'/> </video> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes'/> </devices> </domain>
Alibaba Cloud Linux 2
<domain type='kvm'> <name>alinux2</name> <memory>1048576</memory> <!-- Set the memory size to 1 GB. --> <vcpu>1</vcpu> <os> <type arch='x86_64'>hvm</type> <boot dev='hd'/> </os> <clock sync="localtime"/> <on_poweroff>destroy</on_poweroff> <on_reboot>restart</on_reboot> <on_crash>restart</on_crash> <devices> <emulator>/usr/bin/qemu-kvm</emulator><!-- Configure a KVM path based on the operating system. For example, the KVM path for Ubuntu is /usr/bin/kvm. --> <disk type='file' device='disk'><!-- Specify the type parameter based on the image format. Set type to qcow2 if the image is in the QCOW2 format, and set type to vpc if the image is in the VHD format. --> <driver name='qemu' type='qcow2' cache='none' dataplane='on' io='native'/> <!-- If you want to create a snapshot in the QCOW2 format, disable dataplane. --> <source file='path'/> <!-- Enter the absolute path of the Alibaba Cloud Linux 2 image. --> <target dev='vda' bus='virtio'/> </disk> <!-- Add information about the seed.img boot image. --> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/path/to/your/seed.img'/> <!-- Enter the absolute path of the seed.img boot image. --> <target dev='vdb' bus='virtio'/> </disk> <interface type='network'> <source network='default'/> <model type='virtio'/> </interface> <console type='pty'> <target type='virtio' port='0'/> </console> <video> <model type='cirrus' vram='9216' heads='1'/> <alias name='video0'/> </video> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes'/> </devices> </domain>
virsh
コマンドを実行して、KVMを起動します。コマンドのサンプルを次のコードに示します。説明デフォルトでは、libvirtは共通ユーザーによって起動されます。 一般ユーザーが画像ファイルおよび画像ファイルのパスを管理する権限を持っていることを確認してください。
Alibaba Cloud Linux 3
sudo virsh define alinux3.xml virsh start <KVMName> # Enter the name of the KVM. You can run the sudo virsh list --name command to query the name of the KVM.
Alibaba Cloud Linux 2
sudo virsh define alinux2.xml sudo virsh start <KVMName> # Enter the name of the KVM. You can run the sudo virsh list --name command to query the name of the KVM.
qemu-kvm
コマンドを実行してKVMを起動します。
次のパラメーター設定をqemu-kvmコマンドに追加します。
-drive file=/path/to/your/seed.img,if=virtio,format=raw
/path/to/your/seed.img
: パスをseed.imgブートイメージファイルのパスに置き換えることができます。if=virtio
: virtioは仮想ディスクへの接続に使用されます。format=raw
: ディスクイメージファイルはRAW形式です。
サンプルコマンド:
sudo /usr/libexec/qemu-kvm -drive file=/home/ecs-user/seed/seed.img,if=virtio,format=raw
virt-managerグラフィカルインターフェイスを使用してKVMを起動
KVMを起動する前に、コンピューター上のKVMの構成ファイルを見つけ、seed.imgブートイメージの絶対パスを構成ファイルに追加します。
次に何をすべきか
KVMの起動後、user-data
構成ファイルに含まれているユーザー名とパスワードを使用して、KVMにログインします。
SSHキーペアを使用してKVMにログインする必要がある場合は、SSHキーペアの公開キーがcloud-init設定ファイルに追加されていることを確認してください。
関連ドキュメント
cloud-initは、Linux仮想マシンを自動的に初期化するために使用されるツールです。 このツールは、仮想マシンの起動時に、ホスト名の指定、ネットワークの構成、ソフトウェアパッケージのインストールなど、一連のタスクを実行できます。 詳細については、「cloud-initドキュメント」をご参照ください。
libvirt、qemu-kvm、およびvirt-managerは、kvmの管理と実行に一般的に使用されます。詳細については、「Red Hatドキュメント」をご参照ください。