J'ai une instance de GCE que j'ai personnalisée et chargée de diverses applications (telles que les applications PHP s'exécutant sous Apache). Je veux maintenant dupliquer cette instance - c'est-à-dire tout ce qu'elle contient . Je pensais à l'origine que clone pourrait le faire, mais j'ai eu un jeu avec elle et elle semble seulement cloner la configuration d'instance et ne rien personnaliser.
Je l'ai googlé et il me semble que ce que je dois faire est de créer une image et de l'utiliser avec une nouvelle instance ou un nouveau clone? Est-ce exact? Si oui, y en a-t-il des étapes par étapes là-bas pour faire cela? J’ai jeté un coup d’œil à la page Google sur les images et elle parle de la nécessité de mettre fin à l’instance pour le faire. Je me méfie un peu de ça. Peut-être que c'est juste la langue utilisée dans la documentation, mais je ne veux pas perdre mon instance existante.
De même, tout sera-t-il stocké sur l'image? Ainsi, par exemple, les éléments suivants seront-ils tous intégrés dans l'image?
/var/www/html
php.ini
, etc ...Vous pouvez créer un snapshot de l'instance source, puis créer une nouvelle instance en sélectionnant l'instantané source en tant que disque. Il va répliquer le serveur très rapidement. Pour les autres disques attachés, vous devez créer un nouveau disque et copier le fichier par net (scp, rsync, etc.)
Dans la console Web, créez un instantané, puis cliquez sur celui-ci et sur le bouton CRÉER UNE INSTANCE , vous pouvez personnaliser les paramètres, puis cliquer à l'endroit où il est indiqué:
Équivalent REST ou ligne de commande
et copiez la ligne de commande, ce sera votre modèle.
À partir de là, vous pouvez créer un script BASH (clone_instance.sh). J'ai fait quelque chose comme ça:
#!/bin/bash -e
snapshot="my-snapshot-name"
gcloud_account="[email protected]"
#clone 10 machines
for machine in 01 02 03 04 05 06 07 08 09 10
do
gcloud compute --project "myProject" disks create "instance-${machine}" \
--size "220" --zone "us-east1-d" --source-snapshot "${snapshot}" \
--type "pd-standard"
gcloud compute --project "bizqualify" instances create "webscrape-${machine}" \
--zone "us-east1-d" --machine-type "n1-highmem-4" --network "default" \
--maintenance-policy "MIGRATE" \
--service-account "[email protected]" \
--scopes "https://www.googleapis.com/auth/devstorage.read_only","https://www.googleapis.com/auth/logging.write","https://www.googleapis.com/auth/monitoring.write","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/trace.append" \
--tags "http-server","https-server" \
--disk "name=webscrape-${machine},device-name=webscrape-${machine},mode=rw,boot=yes,auto-delete=yes"
done
Maintenant, dans votre terminal, vous pouvez exécuter votre script
sh clone_instance.sh
Si vous avez d’autres disques connectés, le meilleur moyen de ne pas les démonter consiste à changer le chemin de leur montage dans/etc/fstab.
Si vous utilisez l'UUID dans fstab et utilisez les mêmes disques d'instantanés (qui auront les mêmes UUID), vous pouvez alors effectuer le clonage sans rien démonter.
Il suffit de changer chaque disque dans fstab pour utiliser UUID comme ceci
UUID=[UUID_VALUE] [MNT_DIR] ext4 discard,defaults,[NOFAIL] 0 2
vous pouvez obtenir l'UUID de
Sudo blkid /dev/[DEVICE_ID]
si vous n'êtes pas sûr de votre DEVICE_ID, vous pouvez utiliser
Sudo lsblk
pour obtenir la liste des identifiants de périphériques utilisés par votre système.
Comme il a été mentionné, si l'instance source a un disque secondaire connecté, il n'est pas possible de ssh dans la nouvelle instance . Je devais prendre un instantané d'une instance de production, je ne pouvais donc pas démonter le disque secondaire sans provoquer perturbation . J'ai pu résoudre le problème en créant un disque à partir de l'instantané, en montant le disque sur une autre instance, en supprimant toute référence au disque secondaire, c'est-à-dire en supprimant l'entrée de /etc/fstab.Once. Je l'avais fait, je pouvais utiliser le disque en tant que disque de démarrage dans une nouvelle instance, et SSH à elle.
Vous pouvez utiliser l'option d'importation GCP VM pour importer cette machine dans le projet.