カスタムイメージを 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 # Alibaba NTP サーバーを使用する # パブリック 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 server ntp1.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp11.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp12.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp2.aliyun.com minpoll 4 maxpoll 10 iburst server ntp2.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp3.aliyun.com minpoll 4 maxpoll 10 iburst server ntp3.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp4.aliyun.com minpoll 4 maxpoll 10 iburst server ntp4.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp5.aliyun.com minpoll 4 maxpoll 10 iburst server ntp5.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp6.aliyun.com minpoll 4 maxpoll 10 iburst server ntp6.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp7.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp8.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst server ntp9.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst # ソース選択で層を無視する。 stratumweight 0.05 # システムクロックが時間を取得/損失する速度を記録する。 driftfile /var/lib/chrony/drift # カーネル RTC 同期を有効にする。 rtcsync # 最初の 3 回の更新では、調整が 10 秒を超える場合、スルーではなくシステムクロックをステップする。 makestep 10 3 # ローカルネットワークからの NTP クライアントアクセスを許可する。 #allow 192.168/16 # localhost でのみコマンドを listen する。 bindcmdaddress 127.0.0.1 bindcmdaddress ::1 # クライアントアクセスのログ記録を無効にする。 noclientlog # クロック調整が 0.5 秒を超える場合、syslog にメッセージを送信する。 logchange 0.5 logdir /var/log/chrony #log measurements statistics tracking EOF
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 # アクセス制御のサポート restrict default kod nomodify notrap nopeer noquery restrict -6 default kod nomodify notrap nopeer noquery restrict 127.0.0.1 restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap nopeer noquery restrict 172.16.0.0 mask 255.240.0.0 nomodify notrap nopeer noquery restrict 100.64.0.0 mask 255.192.0.0 nomodify notrap nopeer noquery restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap nopeer noquery # ローカルクロック server 127.127.1.0 fudge 127.127.1.0 stratum 10 restrict ntp.aliyun.com nomodify notrap nopeer noquery restrict ntp.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp1.aliyun.com nomodify notrap nopeer noquery restrict ntp1.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp10.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp11.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp12.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp2.aliyun.com nomodify notrap nopeer noquery restrict ntp2.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp3.aliyun.com nomodify notrap nopeer noquery restrict ntp3.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp4.aliyun.com nomodify notrap nopeer noquery restrict ntp4.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp5.aliyun.com nomodify notrap nopeer noquery restrict ntp5.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp6.aliyun.com nomodify notrap nopeer noquery restrict ntp6.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp7.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp8.cloud.aliyuncs.com nomodify notrap nopeer noquery restrict ntp9.cloud.aliyuncs.com nomodify notrap nopeer noquery server ntp.aliyun.com iburst minpoll 4 maxpoll 10 server ntp.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp1.aliyun.com iburst minpoll 4 maxpoll 10 server ntp1.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp10.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp11.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp12.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp2.aliyun.com iburst minpoll 4 maxpoll 10 server ntp2.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp3.aliyun.com iburst minpoll 4 maxpoll 10 server ntp3.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp4.aliyun.com iburst minpoll 4 maxpoll 10 server ntp4.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp5.aliyun.com iburst minpoll 4 maxpoll 10 server ntp5.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp6.aliyun.com iburst minpoll 4 maxpoll 10 server ntp6.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp7.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp8.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 server ntp9.cloud.aliyuncs.com iburst minpoll 4 maxpoll 10 EOF
MOTD サービスを構成する
イメージを作成する場合は、Message of the Day (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/ // インデックス URL [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
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 net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.default.arp_announce = 2 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_announce = 2 net.ipv4.tcp_max_tw_buckets = 5000 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_max_syn_backlog = 1024 net.ipv4.tcp_synack_retries = 2 net.ipv4.tcp_slow_start_after_idle = 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 はビジネス要件に基づいて履歴レコードとログをクリアできます。