Alibaba Cloud Linux イメージは VHD および QCOW2 フォーマットで利用でき、cloud-init が組み込まれています。このイメージはオンプレミスの仮想マシンで使用できます。カーネルベースの仮想マシン (KVM) のみがサポートされています。この Topic では、オンプレミスの仮想マシンで Alibaba Cloud Linux 2 または 3 のイメージを使用する方法について説明します。
背景情報
この Topic では、オンプレミスのオペレーティングシステムは Anolis OS です。Alibaba Cloud Linux イメージを使用して KVM を作成し、cloud-init を使用して KVM のシステム設定を初期化します。NoCloud データソースは、オンプレミスの構成ファイルを作成するために使用されます。構成ファイルが仮想ディスクとして KVM にアタッチされると、KVM を起動できます。Anolis OS をダウンロードするには、Anolis OS ダウンロードページにアクセスしてください。この Topic は、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 ブートイメージファイルを提供します。次の URL から [seed.img] ブートイメージをダウンロードできます。
Alibaba Cloud Linux 3: Alibaba Cloud Linux 3 オンプレミスイメージ
Alibaba Cloud Linux 2: Alibaba Cloud Linux 2 オンプレミスイメージ
説明イメージ内の構成は変更できません。この場合、イメージが特定のシナリオに適していない可能性があります。イメージを使用する前に、イメージに精通していることを確認してください。
方法 2: NoCloud データソースを使用して seed.img ブートイメージを手動で生成する
説明NoCloud データソースは、オンプレミス環境で構成ファイルを提供できる cloud-init データソースです。ファイルは仮想マシンによって読み取られ、使用されます。
オンプレミスのディレクトリに、
meta-dataとuser-dataという名前の 2 つの構成ファイルを作成します。この 2 つのファイルは
seed.imgブートイメージの一部として含まれています。仮想マシンが起動すると、cloud-init は構成ファイルを読み取り、構成ファイルに基づいて仮想マシンを初期化します。seedという名前のディレクトリを作成し、そのディレクトリに移動します。sudo mkdir seed sudo cd seed/meta-dataという名前の構成ファイルを作成します。次の例は、構成ファイルの内容を示しています。仮想マシンの名前は
alinux-hostです。ビジネス要件に基づいて名前を変更できます。#cloud-config #vim:syntax=yaml local-hostname: alinux-hostuser-dataという名前の構成ファイルを作成します。次の例は、ファイルの内容を示しています。必要に応じて構成を変更できます。この構成例を直接使用する場合は、イメージファイルの内容を完全に理解していることを確認してください。
ユーザー名が
alinux、パスワードがaliyunのアカウントを追加し、sudoコマンドを実行する権限を付与します。Alibaba Cloud Linux 3 の Yellowdog Updater, Modified (YUM) ソースを追加します。
Alibaba Cloud Linux 3
#cloud-config #vim:syntax=yaml # alinux という名前のアカウントを作成し、sudo コマンドを実行する権限をアカウントに付与します。 users: - default - name: alinux sudo: ['ALL=(ALL) ALL'] plain_text_passwd: aliyun lock_passwd: false # Alibaba Cloud Linux 3 用の YUM リポジトリを作成します。 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-3Alibaba Cloud Linux 2
#cloud-config #vim:syntax=yaml # alinux という名前のアカウントを作成し、sudo コマンドを実行する権限をアカウントに付与します。 users: - default - name: alinux sudo: ['ALL=(ALL) ALL'] plain_text_passwd: aliyun lock_passwd: false # Alibaba Cloud Linux 2 用の YUM リポジトリを作成します。 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-8Escキーを押し、[: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><!-- メモリサイズを 1 GB に設定します。 --> <vcpu>1</vcpu> cpu mode='host-passthrough'><!-- 対応するアーキテクチャのサーバーで KVM を起動します。 --> </cpu> <os> <type arch='x86_64'>hvm</type><!-- サーバーのアーキテクチャが ARM 64 ビットの場合は、arch を 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><!-- オペレーティングシステムに基づいて KVM パスを構成します。たとえば、Ubuntu の KVM パスは /usr/bin/kvm です。 --> <disk type='file' device='disk'><!-- イメージフォーマットに基づいて type パラメーターを指定します。イメージが QCOW2 フォーマットの場合は type を qcow2 に設定し、VHD フォーマットの場合は type を vpc に設定します。 --> <driver name='qemu' type='qcow2' cache='none' dataplane='on' io='native'/> <!-- QCOW2 フォーマットでスナップショットを作成する場合は、dataplane を無効にします。 --> <source file='path'/> <!-- Alibaba Cloud Linux 3 イメージの絶対パスを入力します。 --> <target dev='vda' bus='virtio'/> </disk> <!-- seed.img ブートイメージに関する情報を追加します。 --> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/path/to/your/seed.img'/> <!-- seed.img ブートイメージの絶対パスを入力します。 --> <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> <!-- メモリサイズを 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><!-- オペレーティングシステムに基づいて KVM パスを構成します。たとえば、Ubuntu の KVM パスは /usr/bin/kvm です。 --> <disk type='file' device='disk'><!-- イメージフォーマットに基づいて type パラメーターを指定します。イメージが QCOW2 フォーマットの場合は type を qcow2 に設定し、VHD フォーマットの場合は type を vpc に設定します。 --> <driver name='qemu' type='qcow2' cache='none' dataplane='on' io='native'/> <!-- QCOW2 フォーマットでスナップショットを作成する場合は、dataplane を無効にします。 --> <source file='path'/> <!-- Alibaba Cloud Linux 2 イメージの絶対パスを入力します。 --> <target dev='vda' bus='virtio'/> </disk> <!-- seed.img ブートイメージに関する情報を追加します。 --> <disk type='file' device='disk'> <driver name='qemu' type='raw'/> <source file='/path/to/your/seed.img'/> <!-- seed.img ブートイメージの絶対パスを入力します。 --> <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> # KVM の名前を入力します。sudo virsh list --name コマンドを実行して KVM の名前をクエリできます。Alibaba Cloud Linux 2
sudo virsh define alinux2.xml sudo virsh start <KVMName> # KVM の名前を入力します。sudo virsh list --name コマンドを実行して 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=rawvirt-manager グラフィカルインターフェイスを使用して KVM を起動する
KVM を起動する前に、コンピューター上で KVM の構成ファイルを見つけ、seed.img ブートイメージの絶対パスを構成ファイルに追加します。
次のステップ
KVM が起動したら、user-data 構成ファイルに含まれているユーザー名とパスワードを使用して KVM にログインします。
SSH キーペアを使用して KVM にログインする必要がある場合は、SSH キーペアの公開鍵が cloud-init 構成ファイルに追加されていることを確認してください。
参考資料
cloud-init は、Linux 仮想マシンを自動的に初期化するために使用されるツールです。このツールは、仮想マシンの起動時に、ホスト名の指定、ネットワークの構成、ソフトウェアパッケージのインストールなど、一連のタスクを実行できます。
libvirt、qemu-kvm、および virt-manager は、KVM の管理と実行に一般的に使用されます。詳細については、「Red Hat ドキュメント」をご参照ください。