Données utilisateur
Lorsque vous créez une instance IBM Cloud® Virtual Servers for Virtual Private Cloud, vous pouvez spécifier des données utilisateur facultatives qui effectuent automatiquement des tâches de configuration communes ou exécutent des scripts. Pour plus d'informations sur les données utilisateur et les noms d'utilisateur, voir Accès IAM.
IBM Cloud VPC utilise la technologie Cloud-init pour configurer des instances de serveurs virtuels. La zone Données utilisateur de la page Nouveau serveur virtuel pour VPC permet aux utilisateurs d'intégrer des options de configuration personnalisées à l'aide de cloud-init. Cloud-init prend en charge plusieurs formats pour les données de configuration, notamment yaml dans un fichier cloud-config.
Vous pouvez spécifier des données cloud-config directement dans la zone Données utilisateur, ou inclure les données cloud-config dans un fichier texte et spécifier le nom de fichier lorsque vous créez votre instance. Par exemple,
si vous enregistrez les données cloud-config dans userdata.blob, spécifiez -user-data @userdata.blob lorsque vous créez une instance à l'aide de l'interface de ligne de commande.
Lorsque vous créez une instance de serveur virtuel à l'aide de l'image IBM Hyper Protect Container Runtime, vous devez transmettre un contrat dans le cadre de la zone Données utilisateur. Etant donné que l'image est une image verrouillée avec l'accès SSH désactivé, le seul moyen d'interagir avec l'instance consiste à transmettre le contrat.
La taille limite de la zone (ou du fichier) Données utilisateur est de 64 ko.
Exemple de données utilisateur pour Linux
Le compte utilisateur par défaut d' Linux dépend du système d'exploitation. Pour voir la liste des systèmes d'exploitation et leurs comptes utilisateur par défaut correspondants, voir Connexion aux instances d' Linux: Détermination du compte utilisateur par défaut.
Ajout d'un utilisateur et d'une clé SSH
L'exemple suivant de cloud-init montre comment un utilisateur Linux peut ajouter un utilisateur et fournir à l'utilisateur une clé SSH autorisée. La zone Name contient la clé publique ajoutée à ~/.ssh/authorized_keys.
Pour les images Linux , le type de clé SSH Ed25519 peut être utilisé uniquement si le serveur SSH du système d'exploitation prend en charge ce type de clé. Pour plus d'informations, voir Initiation aux clés SSH.
#cloud-config
users:
- name: demouser
gecos: Demo User
sudo: ALL=(ALL) NOPASSWD:ALL
groups: users, admin
ssh_import_id: None
lock_passwd: true
ssh_authorized_keys:
- <ssh public key>
L'exemple de script shell suivant montre comment un utilisateur Linux peut ajouter une clé SSH pour l'utilisateur en cours.
#!/bin/bash
echo <sshKey> > ~/.ssh/authorized_keys
Vous pouvez coller l'un de ces exemples directement dans la zone Données utilisateur. Les données utilisateur sont ensuite disponibles pour l'instance de serveur virtuel lors de la mise à disposition.
Si vous spécifiez d'inclure un fichier et que des espaces précèdent le nom du fichier, les données ne sont pas interprétées correctement. Vérifiez que #!/bin/sh ou #!/bin/bash sont les premiers caractères de la ligne
qui suit immédiatement la désignation de fin de fichier (<<EOF). Les caractères ne peuvent pas être indentés.
Pour plus d'exemples et d'informations sur les données utilisateur du site Linux, voir les exemples de configuration du nuage(Cloud config).
Configuration d'un espace de stockage d'instance à disque unique à l'aide du script cloud-config
Le stockage d'instance est une fonctionnalité des VPC dans laquelle vous pouvez demander des instances de serveur virtuel connectées à un stockage local rapide. Pour plus d'informations sur le stockage d'instance, reportez-vous à la rubrique A propos du stockage d'instance.
Par défaut, lorsque vous mettez à disposition une instance de serveur virtuel avec stockage d'instance et que vous vous connectez à ce serveur pour la première fois, les disques de stockage d'instance ne sont pas configurés. Ils apparaissent
comme unités par blocs (par exemple /dev/vdb) et vous devez réaliser les opérations suivantes pour pouvoir les utiliser avec un système de fichiers :
- Partitionner l'unité.
- Formater la partition avec un système de fichiers.
- Montez le système de fichiers.
Ces activités peuvent également être effectuées automatiquement lorsque vous utilisez la zone Données utilisateur pour mettre à disposition l'instance virtuelle. Le script cloud-config définit les actions suivantes
:
- Indique au processus d'initialisation du nuage de s'exécuter lors du premier démarrage de votre instance virtuelle.
- Il partitionne automatiquement l'unité.
- Il formate la partition avec un système de fichiers
ext4. - Il monte le système de fichiers.
Ne spécifiez pas la zone Données utilisateur pour configurer automatiquement un disque de stockage d'instance qui ne fait pas partie de la définition d'instance virtuelle. Tenter de configurer automatiquement un disque de
stockage d'instance qui ne fait pas partie de la définition d'instance virtuelle cible dev/vdb device et peut pointer vers la source de données cloud-init, ce qui corrompt les configurations cloud-init, telles que le nom d'hôte
et les clés ssh.
L'exemple suivant montre des données utilisateur qui configurent automatiquement un disque de stockage d'instance. Cet exemple peut être utilisé avec un profil d'instance qui spécifie un disque unique.
#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first
# virtio_blk device after the boot device, initialize ext4 on it and
# mount it on a folder matching the label.
#
disk_setup:
/dev/vdb:
table_type: 'mbr'
layout:
- 100
overwrite: false
fs_setup:
- label: /mnt/inststg1
filesystem: 'ext4'
device: /dev/vdb1
overwrite: false
runcmd:
- [ mkdir, /mnt/inststg1 ]
mounts:
- ["/dev/vdb1", "/mnt/inststg1"]
mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]
Ce script configure /dev/vdb, le premier périphérique de stockage de l'instance avec le type d'interface virtio_blk disponible sur l'instance virtuelle. Ce script peut être collé dans la zone Données utilisateur ou importé à l'aide du lien Import user data de l'interface utilisateur.
Ce script a été testé avec une image stockée d'Ubuntu 20.04 LTS Focal Fossa. Il peut convenir pour d'autres images personnalisées et images stockées Linux, mais il se peut que des ajustements soient nécessaires.
Le script cloud-config n'est pas approprié pour les serveurs virtuels Windows. Si votre instance ne contient pas de stockage d'instance, n'utilisez pas ce script. Elle risque de configurer une unité non prévue.
Voir les informations suivantes sur les éléments qui se trouvent dans le script cloud-config :
- disk_setup : crée une partition par défaut qui couvre l'intégralité du disque avec un enregistrement d'amorçage maître. Si "overwrite: false" est spécifié, cette opération est ignorée si l'unité est déjà partitionnée.
- fs_setup : crée un système de fichiers ext4 sur la première partition de l'unité par blocs vdb et le nomme "inststg1". Vous pouvez ajuster le type et le libellé du système de fichiers selon vos besoins. Le paramètre "overwrite: false" empêche le formatage de la partition si cette dernière est déjà formatée avec un système de fichiers.
- runcmd : crée un répertoire à utiliser comme point de montage à partir '/' dans le système de fichiers parent hiérarchique.
- mounts : monte l'unité du système de fichiers sur /inststg1. Vous pouvez renommer le chemin de répertoire ici et sous runcmd.
- mount_default_fields : crée une instruction de montage permanent dans le fichier /etc/fstab. Si vous exécutez une commande de réamorçage, le serveur virtuel revient sauvegardé avec le système de fichiers du stockage d'instance encore monté.
Le CLI et l'API prennent également en charge le champ Données de l'utilisateur.
Cet exemple de script cloud-config configure automatiquement une unité par blocs /dev/vdb de stockage d'instance. Si vous redémarrez uniquement votre serveur virtuel, cette configuration continue de fonctionner car la configuration
et les données persistent. Toutefois, si vous démarrez un serveur virtuel qui était précédemment arrêté, le serveur virtuel dispose d'un nouvel ensemble de disques de stockage d'instance lorsqu'il démarre. Cette situation requiert une nouvelle
exécution manuelle de la procédure cloud-init. Par défaut, le script cloud-config n'est exécuté qu'au premier démarrage. Vous pouvez également éditer la section cloud-init du fichier cloud.config afin que la procédure cloud-init soit automatiquement
exécutée à chaque réamorçage. Pour les étapes à suivre, reportez-vous à la section Editer la section cloud_cloud_init_modules du fichier cloud.config pour une exécution à chaque réamorçage.
Configuration d'une instance de stockage à deux disques à l'aide du script cloud-config
L'exemple suivant montre des données utilisateur qui configurent automatiquement un disque de stockage d'instance. Cet exemple peut être utilisé avec un profil d'instance qui spécifie deux disques.
#cloud-config
# Cloud-init supports simple partition and file system config.
# This user data yaml will create a full partition on the first two
# virtio_blk devices after the boot device, initialize ext4 on them and
# mount them on new folders off of ‘/mnt/’.
#
disk_setup:
/dev/vdb:
table_type: 'mbr'
layout:
- 100
overwrite: false
/dev/vdc:
table_type: 'mbr'
layout:
- 100
overwrite: false
fs_setup:
- label: /mnt/inststg1
filesystem: 'ext4'
device: /dev/vdb1
overwrite: false
- label: /mnt/inststg2
filesystem: 'ext4'
device: /dev/vdc1
overwrite: false
runcmd:
- [ mkdir, /mnt/inststg1 ]
- [ mkdir, /mnt/inststg2 ]
mounts:
- ["/dev/vdb1", "/mnt/inststg1"]
- ["/dev/vdc1", "/mnt/inststg2"]
mount_default_fields: [ None, None, "auto", "defaults,nofail", "0", "2" ]
Cet exemple de script cloud-config configure automatiquement le stockage d'instance /dev/vdb et les unités par bloc dev/vdc et suppose un type d'interface virtio_blk pour le stockage d'instance. Si vous
redémarrez uniquement votre serveur virtuel, cette configuration continue de fonctionner car la configuration et les données persistent.
Si vous démarrez un serveur virtuel qui a été arrêté, le serveur virtuel dispose d'un nouveau jeu de disques de stockage d'instance lorsqu'il démarre. Dans ce cas, les étapes du "cloud-init" doivent être relancées manuellement. Par défaut, le script cloud-config n'est exécuté qu'au premier démarrage. Vous pouvez également éditer la section cloud-init du fichier cloud.config afin que la procédure cloud-init soit automatiquement exécutée à chaque réamorçage.
Editer la section cloud_cloud_init_modules du fichier cloud.config pour une exécution à chaque réamorçage
Le script cloud-config de l'exemple précédent configure automatiquement une unité par blocs /dev/vdb de stockage d'instance. Si vous redémarrez uniquement votre serveur virtuel, cette configuration continue de fonctionner car
la configuration et les données persistent. Toutefois, si vous démarrez un serveur virtuel qui était arrêté, le serveur virtuel dispose d'un nouvel ensemble de disques de stockage d'instance lorsqu'il démarre. Dans ce cas, les étapes du
"cloud-init" doivent être relancées manuellement. Par défaut, le script cloud-config n'est exécuté qu'au premier démarrage.
- Vous avez besoin d'une instance provisionnée avec le champ Données utilisateur qui spécifie les données yaml cloud-init de l'exemple précédent.
- Lorsque vous vous connectez à l'instance démarrée, le système de fichiers doit être configuré et monté.
- Vous n'avez pas d'autres directives dans les sections disk_setup ou mount du fichier cloud-config yaml qui sont spécifiées en tant que données utilisateur.
Pour exécuter le script cloud-config à chaque démarrage successif, utilisez la procédure suivante :
-
Éditez le fichier
etc/cloud/cloud.cfg. -
Recherchez la section «
cloud_init_modules» (Installation de disque)- elle contient les modules disk_setup et mount. -
Remplacez les lignes des modules disk_setup et mount par
always. La section se présente comme suit :# The modules that run in the 'init' stage cloud_init_modules: - migrator - seed_random - bootcmd - write-files - growpart - resizefs - [disk_setup, always] - [mounts, always] - set_hostname - update_hostname - update_etc_hosts - ca-certs - rsyslog - users-groups - ssh -
Sauvegardez le fichier, puis arrêtez et démarrez l'instance. Votre montage est automatiquement créé sur un système de fichiers nouvellement partitionné et formaté.
Exemple de données utilisateur pour Windows
L'exemple suivant montre des données utilisateur qui peuvent être transmises à une instance Windows. Cet exemple de données utilisateur définit le fuseau horaire.
"user_data": "Content-Type: multipart/mixed; boundary=MIMEBOUNDARY\nMIME-Version: 1.0\n\n--MIMEBOUNDARY\nContent-Type: text/cloud-config; charset=\"us-ascii\"\nMIME-Version: 1.0\nContent-Transfer-Encoding: 7bit\nContent-Disposition: attachment; filename=\"cloud-config\"\n#cloud-config\n\nset_timezone: America/Detroit\n\n--MIMEBOUNDARY--\n"
Pour plus d'exemples et d'informations sur les données utilisateur Windows, voir la documentation de Cloudbase-init 1.0.
Exemples de données utilisateur pour Fedora Core OS
Les exemples suivants montrent des données utilisateur pouvant être transmises à une instance du système d'exploitation Fedora Core.
La connexion utilisateur « root » est désactivée par défaut dans le système d'exploitation Fedora Core. La connexion utilisateur « core » peut être utilisée pour se connecter aux instances du système d'exploitation Fedora Core.
Les données utilisateur de Fedora Core OS doivent être au format Ignition.
Utilisez l'exemple suivant pour amorcer une instance de système d'exploitation Fedora Core.
ibmcloud is instance-create $NAME $VPC $ZONE $PROFILE $SUBNET --image-id $IMAGE --key-ids $SSHKEY --user-data @example.ign
Utilisez l'exemple suivant pour créer un utilisateur local.
-
Écrivez la configuration de Butane dans le format YAML.
Configuration Butane
variant: fcos version: 1.4.0 passwd: users: - name: demouser -
Utilisez Butane pour convertir la configuration Butane en configuration Ignition.
Configuration Ignition
"ignition": { "version": "1.4.0" }, "passwd": { "users": [ { "name": "demouser" } ] } }
Utilisez l'exemple de données utilisateur suivant pour ajouter une clé SSH à un utilisateur local.
-
Écrivez la configuration de Butane dans le format YAML.
Configuration Butane
variant: fcos version: 1.4.0 passwd: users: - name: demouser ssh_authorized_keys: - <ssh public key> -
Utilisez Butane pour convertir la configuration Butane en configuration Ignition.
Configuration Ignition
"ignition": { "version": "1.4.0" }, "passwd": { "users": [ { "name": "demouser", "sshAuthorizedKeys": [ "<ssh public key>" ] } ] } }
Pour plus d'exemples et d'informations sur les données utilisateur du système d'exploitation Fedora Core, voir la documentation de Fedora Project.
Etapes suivantes
Une fois que vous avez choisi un profil, vous devez planifier et créer une instance.