Utilisez SSH pour arrêter un VM à l’aide de l’opération de type workflow
Utilisez SSH pour arrêter à distance un VM à l’aide d’une opération de type workflow. Suivez ce cas d’utilisation pour passer en revue toutes les tâches requises pour accomplir ce type d’arrêt.
Avant de commencer
Procédure
-
Pour créer l’activité personnalisée SSH, procédez comme suit :
- Accédez à Portail d’administration > Workflows > Éditeur de workflow.
- Cliquez sur l’onglet Personnalisé , puis sur + (signe plus) pour créer une activité personnalisée.
-
Dans la liste des types d’activités, choisissez SSH.
-
Le concepteur d’activité s’ouvre avec l’onglet Général affiché
Saisissez un nom unique pour l’activité, puis cliquez sur Continuer.
- Dans l’onglet Entrées, ajoutez les variables d’entrée en procédant comme suit, puis cliquez sur Continuer :
- Dans la table Entrée, cliquez sur le + dans un cercle pour créer une variable d’entrée.
-
Cliquez à droite de ABC dans la colonne Nom , puis saisissez le nom de l’entrée.
Les entrées varient en fonction de l’objet à impacter. Vous pouvez arrêter une activité pour arrêter un VM, de sorte que les entrées reflètent les valeurs nécessaires pour accomplir cette action.
Les colonnes Type et Obligatoire se remplissent automatiquement en fonction de la saisie que vous entrez.
-
Créez un objet d’entrée pour chaque entrée de la table suivante, puis cliquez sur Continuer :
Variable d’entrée Type Obligatoire Hôte Chaîne Non Commande Chaîne Non Balise d’informations d’identification Chaîne Non - Dans l’onglet Commande d’exécution, procédez comme suit :
- Dans la table Sortie, cliquez sur le + dans un cercle pour créer une variable de sortie.
-
Cliquez à droite de ABC dans la colonne Nom , puis saisissez le nom de la sortie.
Les variables de sortie reflètent les résultats possibles lorsque le workflow tente de se connecter en SSH à l’ordinateur virtuel. La colonne Type se remplit automatiquement.
Sorties Type erreur Chaîne sortie Chaîne - Cliquez sur la variable d’erreur et faites-la glisser vers le champ Nom de variable dans la table Règles d’analyse.
- Dans la boîte de dialogue Règle d’analyse pour les erreurs, dans la liste déroulante Source d’analyse, sélectionnez la source appropriée ; dans ce cas, executionResult.errorMessages.
-
Répétez l’opération pour la variable de sortie, en sélectionnant executionResult.output comme source d’analyse, puis cliquez sur Soumettre.
-
Cliquez sur Continuer.
Les conditions sont facultatives.
- Cliquez sur Enregistrer, puis sur Publier pour rendre l’activité disponible dans le workflow.
-
Pour créer le workflow SSH nécessaire à la mise hors tension de l’ordinateur virtuel, procédez comme suit :
Lorsque vous créez un workflow, vous l’associez à une table et à une activité.
- Vous pouvez créer le workflow sur une table au niveau global ou une table au niveau de l’application. Utilisez la table globale pour rendre le workflow disponible avec toutes les applications ServiceNow. Ici, nous utilisons une table pour , Cloud Provisioning and Governance de sorte que ce workflow ne sera disponible qu’avec cette application.
- Vous pouvez créer le workflow à partir de l’éditeur de workflow ou du concepteur d’activité. Ici, le concepteur d’activité est utilisé.
- Dans le concepteur d’activité, sélectionnez l’onglet Workflows à droite, puis cliquez sur le signe + (signe plus) pour ajouter un nouveau workflow.
- Dans la fenêtre Nouveau workflow, saisissez un nom unique pour le workflow.
-
Dans la liste déroulante Table , sélectionnez la table à utiliser.
Recherchez et utilisez l’instance d’ordinateur virtuel cmdb_ci_vm_instance pour utiliser le workflow afin de mettre un ordinateur virtuel hors tension.
- Cliquez sur Envoyer.
- Lorsque le workflow s’affiche dans le canevas, supprimez la ligne de connexion entre le point de départ et le point d’arrivée du workflow.
- Supprimez la ligne de connexion entre le point de départ et le point d’arrivée du workflow.
- Cliquez avec le bouton droit sur le canevas Plus d’informations et sélectionnez Modifier les entrées.
-
Créez les entrées suivantes :
Remarque :Prenez les noms d’entrée dans le champ Colonne, et non dans le champ Étiquette. Si le workflow est associé à une table de niveau global, le nom de l’entrée dans le champ Colonne est précédé de u_, par exemple, u_ipaddress. Ici, la table est au niveau de l’application, elle n’a donc pas besoin de préfixe.
Tableau 1. Entrées de workflow Type Étiquette Colonne (ajoutée automatiquement) Longueur max. Chaîne IPAddress ipaddress 100 Chaîne Balise d’informations d’identification balise d’informations d’identification 100 - Cliquez sur Envoyer.
- Cliquez avec le bouton droit sur le canevas, puis sélectionnez Ajouter une activité personnalisée.
- Dans la fenêtre Versions, recherchez et sélectionnez l’activité que vous avez créée initialement dans ce cas d’utilisation.
- Dans la fenêtre Nouvelle activité de cette activité (Nouvel enregistrement de l’activité du workflow [vue du générateur de diagrammes]), saisissez un nom pour l’activité.
-
Dans le champ Hôte , tapez le mappage d’entrée attendu par l’activité.
Ici, il s’agit de l’adresse IP de l’hôte : ${workflow.inputs.u_ipaddress}. Utilisez cette expression pour obtenir l’adresse IP :
$(Script :CMPVMUtils.getReachableIp[arg=$(Stack.items[Serveur virtuel].attributes[sys_id])])
- Dans le champ Commande, saisissez shutdown -h now
-
Dans le champ Balise d’informations d’identification, tapez ${workflow.inputs.u_credentialtag}
Utilisez cette expression pour obtenir la balise d’informations d’identification :
$(Script:CMPVMUtils.getCredentialAlias[arg=${Stack.items[Virtual Server].attributes[sys_id]}])
-
Cliquez sur Envoyer.
L’activité s’affiche dans le canevas du workflow.
- Cliquez avec le bouton droit sur le canevas, puis sélectionnez Ajouter une activité principale pour ajouter une activité de script exécutée.
- Dans la fenêtre Définitions d’activité de workflow, recherchez et sélectionnez Exécuter le script.
- Dans la fenêtre Nouvelle activité : Exécuter le script, saisissez un nom pour l’activité.
-
Copiez et collez un script (approprié à votre environnement) dans le champ Script .
Ce script met à jour l’état de l’ordinateur virtuel après son arrêt.Exemple de script :
if ( gs.nil(data.get(3).error)) { current.state = 'off'; current.setWorkflow(false); current.update(); } - Cliquez sur Envoyer.
- Dans le canevas, connectez les connecteurs entre le point de début, l’activité, le script d’exécution et le point de fin.
-
Validez le workflow à l’aide de la validation de workflow.
Remarque :Le système ne recommande pas l’utilisation de current.update(). Cela peut être ignoré.
-
Pour ajouter l’opération à un bloc de ressources, procédez comme suit :
Vous pouvez sélectionner l’une des opérations existantes dans un bloc de ressources pour qu’elles fonctionnent avec votre workflow ou créer une opération personnalisée.
- Dans le Portail d'administration du cloud, accédez à Conception > Blocs de ressources.
- Sélectionnez un bloc de ressources, par exemple Serveur virtuel.
- Déplacez l’état du bloc de ressources de Publié à Brouillon pour le rendre modifiable.
-
Sélectionnez l’onglet Opérations , puis dans le champ déroulant Interface, sélectionnez une interface disponible pour l’utilisateur.
L’interface par défaut est Virtual Server Interface.
- Cliquez sur + à droite du champ Opération, puis dans la boîte de dialogue Ajouter une opération, saisissez un nom significatif et unique.
- Sélectionnez une opération dans la liste déroulante Type d’opération.
- Sélectionnez Public dans le champ Type d’accès.
-
Remplissez le formulaire, puis cliquez sur Envoyer.
Type d'exploitation Sélectionnez l’opération à effectuer. Type d'accès Pour que l’utilisateur puisse voir l’opération au niveau des ressources pendant la mise en service, sélectionnez Public. Les opérations définies sur Privé ne sont pas visibles pendant la mise en service. L’opération est disponible sur la ressource lorsque vous sélectionnez la ressource pour votre workflow. -
Pour ajouter une étape d’opération de ressource afin d’appeler le workflow, toujours dans l’onglet Opérations, cliquez sur Étapes > Ajouter une étape.
Pour permettre l’exportation du workflow dans le cadre des ensembles de mises à jour, vous devez créer une interface d’extension et ajouter la nouvelle opération. Consultez Étendre Cloud Provisioning and Governance les blocs de ressources avec une opération de remplacement pour en savoir plus.
- Dans la fenêtre contextuelle Ajouter des étapes d’opération, sélectionnez Appeler le workflowpour le type d’opération.
-
Sélectionnez le workflow dans la liste des workflows que vous avez créés.
Le système peut filtrer la liste à l’aide de balises. Pour ajouter une balise :
- Accédez aux propriétés système.
- Localisez et sélectionnez la propriété sn_cmp.workflow_tag_filtersystème .
- Modifiez la propriété. Ajoutez une balise ou une liste de balises séparées par des virgules.
- Cliquez sur Enregistrer.
-
Pour filtrer les workflows :
- Dans la table de workflow, ouvrez le workflow.
- Cliquez sur Ajouter une balise.
- Entrez la valeur que vous avez fournie précédemment dans la propriété sn_cmp.workflow_tag_filter
- Cliquez sur Entrée pour ajouter la valeur en tant que balise au workflow. La nouvelle étape s’affiche après que le logiciel a généré le nouveau catalogue d’opérations du jour 2.
-
Il peut exister des workflows créés sur des tables autres que global.
Vous pouvez ajouter un workflow créé sur une telle table. Pour exécuter des opérations sur ce type de workflow, vous avez besoin de l’sys_id de l’enregistrement dans lequel le workflow s’exécute pour créer l’enregistrement actuel. Ainsi, lorsque le concepteur ajoute un workflow qui se trouve sur une table autre que global, le système crée un wf_current paramètre dans le paramètre d’entrée de l’opération. Vous pouvez ensuite écrire une expression pour mapper la sys_id de la ressource dans laquelle l’opération s’exécute. Une fois cette opération terminée, le concepteur peut utiliser le mot clé « actuel » dans les scripts de workflow.Pour ajouter le workflow :
- Une fois l’étape créée, le système ajoute les entrées de workflow aux paramètres d’entrée de l’opération. Vous pouvez ensuite fournir le mappage de ces paramètres, si nécessaire.
- Cliquez sur le bouton Générer le catalogue pour créer l’élément de catalogue pour l’opération.
- Une fois le catalogue généré, vous pouvez ajouter des règles de changement de champ et de chargement à des éléments de catalogue.
- Définissez le bloc de ressources sur l’état Publié pour rendre le workflow disponible dans le Portail de l'utilisateur dans le cloud.
-
Pour exécuter l’opération à partir du portail de l’utilisateur, procédez comme suit :
- Mettez en service un ordinateur virtuel AWS simple à partir du portail.
- Une fois la mise en service des VM terminée, accédez à la pile > ressource VM.
-
Dans l’option Sélectionner une opération de ressource, sélectionnez l’activité d’arrêt personnalisée que vous avez créée précédemment dans ce cas d’utilisation, puis cliquez sur OK.
L’opération s’exécute après la création du RITM et les changements d’état de l’ordinateur virtuel dans la console AWS.
- Accédez à Exploitation > Sentiers pour afficher les journaux de piste et suivre les étapes de l’opération.
-
Pour dépanner, si nécessaire, procédez comme suit :
-
Utilisez l’élément de demande (RITM) et accédez au tableau de bord RootCauseAnalysis.
Le RITM contient le lien vers le contexte de workflow de l’opération actuellement exécutée.
-
Vérifiez ces erreurs courantes :
Tableau 2. Gestion des erreurs Symptôme Message d'erreur Le VM s’arrête, mais un problème de connexion SSH est survenu. « Erreur ; tâche terminée avec l’état ERREUR : problème dans la session SSH, tâche abandonnée : fermeture inattendue de la connexion par le serveur SSH : \n, Le VM est déjà arrêté/ne peut pas atteindre le VM « Impossible de se connecter, l’état est TCP_CONNECTION_FAILURE. Délai expiré pendant l’attente de connexion de TCP à 10.198.252.224:22 : \n", Remarque :Vérifiez que l’adresse IP de l’ordinateur virtuel dans le wf_context est l’adresse appropriée. L’ordinateur virtuel a peut-être déjà été arrêté. Vérifiez que l’adresse IP est accessible.Accès root non disponible « Échec de l’émission de l’appel de méthode : accès refusé\nDoit être la racine.\nÉtat de sortie : 1\n\n », Remarque :Confirmez que la case Must Sudo est cochée dans l’activité SSH au début de ce cas d’utilisation.
-
Utilisez l’élément de demande (RITM) et accédez au tableau de bord RootCauseAnalysis.