Le contenu de cet article explique comment sélectionner une image personnalisée lors de l'importation d'une image personnalisée. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Personnaliser l'image personnalisée Linux
Lorsque votre système d'exploitation d'image ne fait pas partie des types de plate-forme existants pris en charge par Alibaba Cloud et que cloud-init ne peut pas être installé, vous pouvez importer l'image personnalisée Sélectionnez Linux personnalisé ( image de version personnalisée). Alibaba Cloud traite l'image Linux personnalisée comme un type de système d'exploitation non reconnu et ne dispose pas des informations de configuration standard nécessaires au démarrage initial d'une instance ECS. Vous devez ajouter un script d'analyse à l'image personnalisée comme décrit dans cet article avant d'importer l'image pour faciliter l'importation. démarrage initial. Exemples de configuration automatisée.
Restrictions
La première partition de l'image Linux personnalisée doit être accessible en écriture.
Le premier type de partition de l'image Linux personnalisée prend en charge FAT32, EXT2, EXT3, EXT4 ou UFS.
Les images Linux personnalisées doivent avoir une taille de fichier virtuel supérieure à 5 Gio.
Les images Linux personnalisées présentent les exigences de sécurité suivantes :
Il ne doit y avoir aucune vulnérabilité à haut risque pouvant être exploitée à distance.
Lorsque vous utilisez le terminal de gestion de la console pour vous connecter à une instance, s'il existe un mot de passe initial par défaut, il doit être modifié lors de votre première connexion. Vous n'êtes pas autorisé à saisir le. instance pour effectuer des opérations avant de modifier le mot de passe.
La paire de clés SSH par défaut n'est pas prise en charge et la paire de clés SSH initiale doit être générée aléatoirement par Alibaba Cloud.
Méthode de configuration
Créez un nouveau répertoire aliyun_custom_image dans le répertoire racine de la première partition de l'image.
Lorsqu'une instance créée à l'aide de cette image Linux personnalisée est démarrée pour la première fois, Alibaba Cloud écrira les informations de configuration liées à l'instance dans le fichier os.conf du répertoire aliyun_custom_image. Si le fichier os.conf n'existe pas, le système le créera automatiquement.
Créez un script d'analyse dans l'image pour analyser la configuration système du fichier os.conf. Voir Considérations sur les scripts d'analyse et Exemples de scripts d'analyse pour les scripts.
Exemple de fichier os.conf
Instance de type réseau classique
hostname=iZ23r29djmjZ password=cXdlcjEyMzQK eth0_ip_addr=10.171.254.123 eth0_mac_addr=00:8c:fa:5e:14:23 eth0_netmask=255.255.255.0 eth0_gateway=10.171.254.1 eth0_route="10.0.0.0/8 10.171.254.1;172.16.0.0/12 10.171.254.1" eth1_ip_addr=42.120.74.105 eth1_mac_addr=00:8c:fa:5e:14:24 eth1_netmask=255.255.255.0 eth1_gateway=42.120.74.1 eth1_route="0.0.0.0/0 42.120.74.1" dns_nameserver="7.7.7.7 8.8.8.8"
La description du paramètre est présentée dans le tableau suivant :
Instance de type VPC de réseau privé
hostname=iZ23r29djmjZ password=cXdlcjEyMzQK eth0_ip_addr=10.171.254.123 eth0_mac_addr=00:8c:fa:5e:14:23 eth0_netmask=255.255.255.0 eth0_gateway=10.171.254.1 eth0_route="0.0.0.0/0 10.171.254.1" dns_nameserver="7.7.7.7 8.8.8.8"
La description du paramètre est telle qu'indiquée dans le tableau suivant :
Remarques sur les scripts d'analyse
Lorsque l'instance est démarrée pour la première fois, dans des circonstances normales, Alibaba Cloud écrit automatiquement le informations sur les éléments de configuration dans le premier Dans le fichier os.conf du répertoire aliyun_custom_image sous le répertoire racine de chaque partition. Pour configurer une image Linux personnalisée, vous devez créer un script d'analyse prédéfini dans l'image pour lire les informations de configuration de l'instance à partir du fichier os.conf et terminer la configuration de l'instance. Voici les conditions qui doivent être remplies pour analyser le script.
Démarrer au démarrage : le script d'analyse doit être configuré pour démarrer automatiquement au démarrage. Par exemple, stockez le script d'analyse dans le répertoire /etc/init.d/.
Règles de valeur des éléments de configuration : Comme décrit dans les éléments de configuration de l'exemple de fichier os.conf, le nombre d'éléments de configuration et les règles de valeur de certains éléments de configuration sont différents entre le VPC et les instances réseau classiques.
Chemin de lecture du fichier de configuration : lors de la création d'une instance optimisée pour les E/S ou d'une instance non optimisée pour les E/S pour une image Linux personnalisée, le nom de périphérique attribué à la première partition est différent par défaut. Par conséquent, il est préférable d'utiliser uuid ou label pour identifier le périphérique de la première partition dans le script d'analyse. Le mot de passe utilisateur est une chaîne codée en Base64 et le traitement associé doit être effectué lors de la définition du mot de passe.
Déterminer le VPC ou le réseau classique : lors de l'analyse du script pour déterminer le type de réseau, vous pouvez vérifier s'il existe eth1_route ou d'autres éléments de configuration liés à eth1. Déterminez le type de réseau de l’instance actuelle, puis analysez-le et traitez-le de manière ciblée.
Les instances de type VPC configurent la route du réseau public par défaut dans le paramètre eth0_route du fichier os.conf.
Les instances de type réseau classique configurent la route du réseau public par défaut dans le paramètre eth1_route du fichier os.conf, et la route du réseau interne est configurée dans eth0_route.
Optimisation de la configuration : la configuration dans le fichier os.conf peut être exécutée une fois pendant tout le cycle de vie de l'instance. Il est recommandé de supprimer le fichier os.conf une fois le script d'analyse exécuté avec succès. Dans le même temps, si le script d'analyse ne lit pas la configuration du fichier os.conf, il n'exécutera pas la configuration dans le fichier.
Traitement d'image personnalisé : lors de la création d'une image personnalisée basée sur une instance créée par une image Linux personnalisée, l'image inclura également ce script de démarrage. Alibaba Cloud écrira la configuration os.conf lorsque l'instance est démarrée pour la première fois, et le script d'analyse peut exécuter la configuration appropriée lorsqu'il détecte la configuration.
修改相关配置时的处理:当实例的配置信息通过阿里云的控制台或 API 发生变更时,阿里云将相关信息写入到 os.conf 文件中,解析脚本将被再次执行从而下发这些更改。
解析脚本示例
以下为以 CentOS 操作系统为例的解析脚本示例,仅供参考,您需要根据实际的操作系统类型调整脚本内容。在使用脚本前,务必在镜像中调试脚本,并保证调试通过。
#!/bin/bash ### BEGIN INIT INFO # Provides: os-conf # Required-Start: $local_fs $network $named $remote_fs # Required-Stop: # Should-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: The initial os-conf job, config the system. ### END INIT INFO first_partition_dir='/boot/' os_conf_dir=${first_partition_dir}/aliyun_custom_image os_conf_file=${os_conf_dir}/os.conf load_os_conf() { if [[ -f $os_conf_file ]]; then . $os_conf_file return 0 else return 1 fi } cleanup() { # ensure $os_conf_file is deleted, to avoid repeating config system rm $os_conf_file >& /dev/null # ensure $os_conf_dir is exitst mkdir -p $os_conf_dir } config_password() { if [[ -n $password ]]; then password=$(echo $password | base64 -d) if [[ $? == 0 && -n $password ]]; then echo "root:$password" | chpasswd fi fi } config_hostname() { if [[ -n $hostname ]]; then sed -i "s/^HOSTNAME=.*/HOSTNAME=$hostname/" /etc/sysconfig/network hostname $hostname fi } config_dns() { if [[ -n $dns_nameserver ]]; then dns_conf=/etc/resolv.conf sed -i '/^nameserver.*/d' $dns_conf for i in $dns_nameserver; do echo "nameserver $i" >> $dns_conf done fi } is_classic_network() { # vpc: eth0 # classic: eth0 eth1 grep -q 'eth1' $os_conf_file } config_network() { /etc/init.d/network stop config_interface eth0 ${eth0_ip_addr} ${eth0_netmask} ${eth0_mac_addr} config_route eth0 ${eth0_route} if is_classic_network ; then config_interface eth1 ${eth1_ip_addr} ${eth1_netmask} ${eth1_mac_addr} config_route eth1 ${eth1_route} fi /etc/init.d/network start } config_interface() { local interface=$1 local ip=$2 local netmask=$3 local mac=$4 inteface_cfg="/etc/sysconfig/network-scripts/ifcfg-${interface}" cat << EOF > $inteface_cfg DEVICE=$interface IPADDR=$ip NETMASK=$netmask HWADDR=$mac ONBOOT=yes BOOTPROTO=static EOF } config_default_gateway() { local gateway=$1 sed -i "s/^GATEWAY=.*/GATEWAY=$gateway/" /etc/sysconfig/network } config_route() { local interface=$1 local route=$2 route_conf=/etc/sysconfig/network-scripts/route-${interface} > $route_conf echo $route | sed 's/;/\n/' | \ while read line; do dst=$(echo $line | awk '{print $1}') gw=$(echo $line | awk '{print $2}') if ! grep -q "$dst" $route_conf 2> /dev/null; then echo "$dst via $gw dev $interface" >> $route_conf fi if [[ "$dst" == "0.0.0.0/0" ]]; then config_default_gateway $gw fi done } ################## sysvinit service portal #################### start() { if load_os_conf ; then config_password config_network config_hostname config_dns cleanup return 0 else echo "not load $os_conf_file" return 0 fi } RETVAL=0 case "$1" in start) start RETVAL=$? ;; *) echo "Usage: $0 {start}" RETVAL=3 ;; esac exit $RETVAL
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!