カスタムイメージを Alibaba Cloud にインポートする前、または Alibaba Cloud Marketplace でカスタムイメージをリリースする前に、イメージはイメージ要件を満たし、Elastic Compute Service (ECS) インスタンスタイプとの互換性テストに合格する必要があります。 これにより、カスタムイメージの可用性とインポート効率が向上し、さまざまなビジネス要件を満たす ECS インスタンスの後続の作成が容易になります。 このトピックでは、Alibaba Cloud Linux イメージの要件について説明します。
ディスク パーティション
イメージ作成中にイメージのディスクをパーティション分割する場合は、次の要件が満たされていることを確認してください。
ディスクのサイズ変更
ディスクは、物理パーティションに基づいて論理パーティションに分割されます。 各ディスクの最後の論理パーティションはルートパーティションとして使用され、システムディスクのパーティション障害を防ぎます。
オンラインディスクサイズ変更をサポートするオペレーティングシステムの場合は、
cloud-utils-growpart
パッケージをインストールし、growpart
ユーティリティを使用してパーティションを拡張して使用可能なディスク容量を占有することをお勧めします。 詳細については、「Linux インスタンスでディスクのパーティションとファイルシステムを拡張する」をご参照ください。
スワップパーティション
イメージを作成するときは、スワップパーティションを使用しないでください。
ディスクのマウント
fstab ファイルと grub ファイルで UUID を構成する必要があります。 詳細については、「fstab ファイルで UUID を構成してデータディスクを自動的にマウントする」および「GRUB 構成ファイルのディスクパーティション識別子を UUID に変更する」をご参照ください。
重要ECS インスタンスの fstab ファイルが正しく構成されていない場合、インスタンスの再起動後にインスタンスが期待どおりに実行されない可能性があります。
ディスクサイズ
システムディスクのサイズは 20 GiB 以上に設定する必要があります。
イメージのブートモード
特定のブートモードをサポートするインスタンスタイプに適合させるために、オンプレミスイメージでブートモードを構成することをお勧めします。 イメージを Alibaba Cloud にインポートするときは、イメージでサポートされているブートモードを指定する必要があります。
オンプレミスイメージを作成するときにブートモード設定を構成する方法については、「仮想マシンを作成してオペレーティングシステムをインストールする」をご参照ください。
イメージを Alibaba Cloud にインポートするときにブートモードを指定する方法については、「カスタムイメージをインポートする」をご参照ください。
インスタンスタイプでサポートされているブートモードを照会するには、DescribeInstanceTypes オペレーションを呼び出し、レスポンスの
SupportedBootModes
値を確認します。
説明オンプレミスイメージが BIOS モードと UEFI モードの両方をサポートしている場合は、イメージを Alibaba Cloud にインポートするときに UEFI-Preferred モードを指定できます。 イメージは、すべてのインスタンスタイプのブートモードに適応できます。 これにより、イメージ作成のコストが削減されます。
必要なソフトウェアとツール
virtio ドライバーをインストールする
イメージをリリースする前に、イメージに virtio ドライバーがインストールされており、virtio ドライバーが一時ファイルシステムに追加されていることを確認してください。 virtio ドライバーにより、イメージを ECS インスタンスで期待どおりに使用できます。 詳細については、「virtio ドライバーをインストールする」をご参照ください。
NVMe ドライバーをインストールする
ecs.g8i や ecs.g7se などの新しい世代の ECS インスタンスファミリでは、Non-Volatile Memory Express (NVMe) プロトコルを使用してディスクを接続できます。 前述のインスタンスファミリのいずれかの ECS インスタンスを作成し、インスタンスが期待どおりに実行されるようにするには、イメージに NVMe ドライバーをインストールします。 詳細については、「カスタムイメージに NVMe ドライバーをインストールするにはどうすればよいですか。」をご参照ください。 イメージを Alibaba Cloud にインポートするときは、[NVMe ドライブ] パラメーターを [サポート] に設定します。 詳細については、「イメージの属性とタグを変更する」をご参照ください。
cloud-init をインストールする
イメージを作成するときは、イメージを実行する ECS インスタンスを初期化できるように cloud-init をインストールします。 詳細については、「cloud-init をインストールする」をご参照ください。 cloud-init 23.2.2 をインストールすることをお勧めします。 このバージョンでは、セキュリティ強化モードでインスタンスメタデータにアクセスできるため、インスタンスメタデータのセキュリティが確保されます。
説明cloud-init を使用してパスワードを変更する場合は、イメージのオペレーティングシステムカーネルが
CONFIG_FW_CFG_SYSFS
機能をサポートしていることを確認してください。 デフォルトでは、Linux コミュニティカーネル 4.6 以降、および CentOS カーネル 3.10.0-826.el7 以降は CONFIG_FW_CFG_SYSFS 機能をサポートしています。 この機能がサポートされているかどうかを確認するには、イメージのソースサーバーでgrep -nr CONFIG_FW_CFG_SYSFS /boot/config-$(uname -r)
コマンドを実行します。 コマンド出力にCONFIG_FW_CFG_SYSFS=y
が含まれている場合、イメージのカーネルはCONFIG_FW_CFG_SYSFS
機能をサポートしています。クラウドアシスタントをインストールする
イメージを作成するときは、クラウドアシスタントをインストールします。 クラウドアシスタントは、ECS 用に開発されたネイティブの自動 O&M ツールです。 クラウドアシスタントを使用すると、シェル、PowerShell、バッチコマンドなどのコマンドをバッチ実行して、インスタンスにログインしたりジャンプサーバーを使用したりすることなく、パスワードなしで ECS インスタンスでさまざまなタスクを実行できます。 クラウドアシスタントを使用して、自動 O&M タスクの実行、プロセスのポーリング、ソフトウェアのインストールまたはアンインストール、サービスの開始または停止、パッチまたはセキュリティ更新プログラムのインストールを実行できます。 詳細については、「クラウドアシスタントクライアントをインストールする」をご参照ください。
セキュリティセンターを使用してイメージのソースサーバーを保護する
イメージを作成するときは、Alibaba Cloud セキュリティセンターを使用してサーバーを保護することをお勧めします。 セキュリティセンターは、アラート通知、ウイルス検出と削除、webshell 検出と削除、クライアント保護、イメージスキャンなどのセキュリティ機能を提供して、クラウド資産とオンプレミスサーバーを保護します。
システム構成
時計を構成する
イメージのハードウェアクロックは、協定世界時 (UTC) またはローカルタイムゾーンにすることができます。 イメージを作成するときは、UTC 時間を使用してください。 コマンド例:
cat > /etc/adjtime << EOF 0.0 0 0.0 0 UTC EOF timedatectl set-local-rtc 0
詳細については、「Linux の時間とタイムゾーン」をご参照ください。
sshd サービスを構成する
イメージを作成するときは、sshd サービスを構成します。
sshd は、Linux オペレーティングシステムにリモートでログインして管理するために使用される Linux サービスです。 sshd は SSH を使用して暗号化された通信チャネルを確立します。 たとえば、
/etc/ssh/sshd_config
ファイルの内容を次のように変更します。UseDNS no AddressFamily inet SyslogFacility AUTHPRIV PermitRootLogin yes PasswordAuthentication yes
chrony サービスまたは NTP サービスを構成する
イメージを作成するときは、chrony サービスまたはネットワークタイムプロトコル (NTP) サービスを構成することをお勧めします。
chrony と NTP は、コンピュータークロックをタイムソースと同期させて時間の精度を確保し、時間の不一致によって発生する問題を防ぐために使用されるツールです。
chrony サービスを設定するために使用するサンプル コマンド
chrony_file=/etc/chrony.conf cat >$chrony_file <<EOF # Use Alibaba NTP server # Public NTP # Alicloud NTP server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp.aliyun.com minpoll 4 maxpoll 10 iburst server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst (後略)
NTP サービスを設定するために使用するサンプル コマンド
ntp_conf=/etc/ntp.conf cat > $ntp_conf << EOF driftfile /var/lib/ntp/drift pidfile /var/run/ntpd.pid logfile /var/log/ntp.log # Access Control Support restrict default kod nomodify notrap nopeer noquery (後略)
MOTD サービスを構成する
イメージを作成するときは、今日のメッセージ (MOTD) サービスを構成することをお勧めします。
MOTD サービスは、Linux オペレーティングシステムにログインしたときにメッセージまたはアナウンスを表示するために使用される Linux 機能です。 コマンド例:
echo -e "\nWelcome to Alibaba Cloud Elastic Compute Service ! \n" > /etc/motd
Firewalld サービスを無効にする
イメージを作成するときは、Firewalld サービスを無効にすることをお勧めします。 Firewalld は、Linux オペレーティングシステムのファイアウォール管理サービスです。 クラウドでは、Firewalld の代わりにセキュリティグループが保護を提供します。 コマンド例:
systemctl stop firewalld systemctl disable firewalld
pip リポジトリを構成する
pip リポジトリが構成されている場合は、Alibaba Cloud pip リポジトリのアドレスを使用して Alibaba Cloud から最新のソフトウェアパッケージを取得することをお勧めします。
~/.pip/pip.conf
ファイルのコンテンツ例:[global] index-url=http://mirrors.cloud.aliyuncs.com/pypi/simple/ [install] trusted-host=mirrors.cloud.aliyuncs.com
ネットワーク設定を構成する
NetworkManager またはネットワークサービスを使用する場合は、
/etc/sysconfig/network-scripts/ifcfg-eth0
ファイルを構成します。DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes
その他のネットワークサービス構成については、「セカンダリ ENI を構成する」をご参照ください。
カーネルパラメーターの構成
kernelopt パラメーターを構成する
イメージを作成するときは、オペレーティングシステムが期待どおりに起動できるように、GRand Unified Bootloader (GRUB) の kernelope カーネルパラメーターを構成します。 次の例では、Debian オペレーティングシステムを使用しています。
/etc/default/grub
ファイルで、GRUB_CMDLINE_LINUX=
行に次のデータを追加します。x86_64 アーキテクチャ
net.ifnames=0 console=tty0 console=ttyS0,115200n8
Arm64 アーキテクチャ
net.ifnames=0 console=tty0 console=ttyAMA0,115200n8
GRUB 構成を有効にするには、
sudo update-grub2
コマンドを実行します。説明GRUB 構成ファイルのパスと GRUB 構成を有効にするために使用されるコマンドは、オペレーティングシステムによって異なります。 詳細については、「カスタムイメージに NVMe ドライバーをインストールするにはどうすればよいですか。」をご参照ください。
sysctl パラメーターを構成する
イメージを作成するときは、sysctl パラメーターを構成して Linux カーネルのランタイムパラメーターを調整および最適化することをお勧めします。
/etc/sysctl.conf
ファイルで次の変更を行います。vm.swappiness = 0 kernel.sysrq = 1 net.ipv4.neigh.default.gc_stale_time = 120 net.ipv4.conf.all.rp_filter = 0 (後略)
カーネルパラメーターの変更を有効にするには、
sudo sysctl -p
コマンドを実行します。
システムセキュリティの推奨事項
システムセキュリティを向上させるために、カスタムイメージを Alibaba Cloud にインポートする前に、次の項目に注意してください。
ルートアカウントをロックアウトします。 これにより、ルートパスワードが設定されていても、他のユーザーがルートアカウントとパスワードを使用してシステムにログインできなくなります。
パスワードベースのログインを無効にするには、PasswordAuthentication パラメーターを変更します。
説明インスタンスの初期化のためにルートパスワードを設定する場合は、
PasswordAuthentication
パラメーターを yes に設定できます。これは、パスワードベースのログインが有効になっていることを示します。
サンプルコード:
dst=/etc/ssh/sshd_config
sed -i 's/^SyslogFacility.*//' $dst
sed -i 's/^PermitRootLogin.*//' $dst
sed -i 's/^PasswordAuthentication.*//' $dst
echo UseDNS no >> $dst
echo SyslogFacility AUTHPRIV >> $dst
echo PasswordAuthentication no >> $dst
passwd -l root
sed -i -e 's/root:[^:]*:/root:*:/g' /etc/shadow
イメージ情報のクリア
独立系ソフトウェアベンダー (ISV) がイメージをリリースする前に、ISV はビジネス要件に基づいて履歴レコードとログをクリアできます。