web-dev-qa-db-fra.com

Comment réexécuter cloud-init sans redémarrage

J'utilise openstack pour créer un VM en utilisant la commande 'nova boot'. Mon image est activée pour le cloud. Je passe un script --user-data qui est un format Shell bash pour le cloud- init à exécuter pendant VM temps de démarrage. Tout cela se passe avec succès. Maintenant mon cas d'utilisation est de réexécuter cloud-init pour exécuter le même script de données utilisateur sans redémarrer la VM. I vu/usr/bin/cloud-init et ils parlent de l'exécution de modules spécifiques mais rien ne peut lui faire exécuter le même script de données utilisateur. Comment cela peut-il être fait? Toute aide serait appréciée.

22
user3532850

Pour que cloud-init se réinitialise, vous devez exécuter rm -rf /var/lib/cloud/instances.

Exécutez ensuite à nouveau le cloud-init start et il exécutera à nouveau le processus de script de démarrage complet.

23
benh57

Comme cela continue d'apparaître dans les résultats de recherche, ce qui fonctionne pour moi:

  1. Supprimer les sémaphores dans /var/lib/cloud/instances/i-xxxxxxx/sem. Cloud-init ne se réexécutera pas si ces fichiers sont présents.
  2. Éditer /var/lib/cloud/instances/i-xxxxxxxx/scripts/part-001. Ceci est votre script de données utilisateur.
  3. Exécutez niquement le module de scripts utilisateur de cloud-init. Cela ne téléchargera pas à nouveau les données utilisateur mais exécutera le script déjà téléchargé (et maintenant modifié) de l'étape 2.

    Sudo /usr/bin/cloud-init single -n cc_scripts_user

11
kadrach

Les commandes ont été mises à jour donc pour réexécuter vous devez clean sortir la configuration existante:

Sudo cloud-init clean

Réexécutez-le ensuite à l'aide de la directive init:

Sudo cloud-init init

Attention: des choses comme les clés d'hôte ssh peuvent être régénérées.

8
Pierz

Pour exécuter le module packages de la partie cloud-config de cloud-init, vous pouvez exécuter

# cloud-init-cfg all config

Pour exécuter le module runcmd de la partie cloud-config de cloud-init, vous pouvez exécuter

# cloud-init-cfg all final
1
jrwren