Il est possible d'exécuter un workflow en tant qu'action d'alerte. Un workflow exécuté en tant qu'action d'alerte est le workflow sélectionné pour l'action d'alerte du workflow Exécuter (BUI) ou est la valeur de la propriété workflow du gestionnaire execute_workflow (CLI), comme décrit dans la section Ajout d'actions d'alerte.
Pour permettre l'exécution d'un workflow en tant qu'action d'alerte, la variable globale workflow doit spécifier un membre alert: true.
Par défaut, les workflows s'exécutent comme l'utilisateur exécutant le workflow. Toutefois, un workflow exécuté en tant qu'action d'alerte s'exécute par défaut comme l'utilisateur ayant créé le workflow. Pour pouvoir être exécuté en tant qu'action d'alerte, la variable globale workflow du workflow doit spécifier un membre setid: true.
Les actions d'alerte ont un paramètre d'objet unique possédant les membres suivants .
|
Le membre items de l'objet de paramètre possède les membres suivants :
|
Les workflows s'exécutant an tant qu'actions d'alerte peuvent utiliser la fonction audit pour générer des entrées de journal. Par exemple, les informations sur le débogage doivent être écrites dans le journal d'audit.
Reportez-vous aux utilisations multiples de la fonction audit dans l'exemple ci-dessous. Ce workflow :
Est exécuté en réponse à l'alerte params.uuid qui spécifie ce workflow à exécuter.
Redémarre le système uniquement si les deux systèmes sont en état clustérisé.
Audite tout échec de réinitialisation.
var workflow = { name: 'Failover', description: 'Fail the node over to its clustered peer', alert: true, setid: true, execute: function (params) { var uuid = params.uuid; var clustered = 'AKCS_CLUSTERED'; audit('attempting failover in response to alert ' + uuid); try { run('configuration cluster'); } catch (err) { audit('could not get clustered state; aborting'); return; } if ((state = get('state')) != clustered) { audit('state is ' + state + '; aborting'); return; } if ((state = get('peer_state')) != clustered) { audit('peer state is ' + state + '; aborting'); return; } run('cd /'); run('confirm maintenance system reboot'); } };