Maison  >  Article  >  Opération et maintenance  >  Comment sélectionner Linux personnalisé lors de l'importation d'une image personnalisée

Comment sélectionner Linux personnalisé lors de l'importation d'une image personnalisée

坏嘻嘻
坏嘻嘻original
2018-09-18 14:59:152444parcourir

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 :

Comment sélectionner Linux personnalisé lors de limportation dune image personnalisée

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 :

Comment sélectionner Linux personnalisé lors de limportation dune image personnalisée

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 &#39;s/;/\n/&#39; | \
while read line; do
dst=$(echo $line | awk &#39;{print $1}&#39;)
gw=$(echo $line | awk &#39;{print $2}&#39;)
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn