Il y a quelques temps, j’ai rencontré un comportement que je n’avais jamais observé jusqu’alors dans le cadre du déploiement de systèmes d’exploitation avec System Center Configuration Manager. Mon client souhaitait appliquer des paramètres réseaux en fonction de l’environnement cible (Production ou Test). Du coup, il avait créé deux tâches Apply Network Settings qui se suivait avec une condition basée sur une variable de séquence de tâches spécialement créée :
- Apply Network Settings LABS : Cette tâche comprend des paramètres comme les serveurs DNS etc…
- Apply Network Settings PROD : Cette tâche n’était pas configurée au moment de la régression.
Après plusieurs tests, une régression a été observée car les paramétrages réseaux de l’environnement de tests n’étaient plus appliqués. En regardant le fichier de journalisation smsts.log de plus près, on pouvait observer que la variable OSDAdapterCount était à 0. Cette variable conditionne l’application des paramètres réseaux spécifiés dans la tâche.
Après plusieurs recherches, j’ai découvert que la tâche modifie la variable malgré les conditions non remplies (Variable de séquence de tâches ne répondant pas au critère spécifié). Du coup, la tâche Apply Network Settings PROD neutralisait les paramètres définis par Apply Network Settings LABS.
J’en ai déduis que la tâche Apply Network Settings n’avait pas été étudiée pour être utilisée à plusieurs reprises. Ce comportement est le même que vous utilisiez System Center Configuration Manager 2007 ou 2012.
Il existe néanmoins une solution de contournement. Vous pouvez insérer chacune des tâches dans un groupe de tâches dédié. Appliquez ensuite la condition auparavant sur la tâche directement sur le groupe. Le moteur de séquence de tâches réagit différent puisque si la condition du groupe n’est pas conforme alors les tâches en dessous ne sont pas évaluées.
Le comportement de la tâche Apply Network Settings doit surement exister pour d’autres tâches.