Versions effected: LDMS 9.0 SP3 and newer
Problem:
Scenario: Configured policies (not policy supported-push) with a reschedule "daily" (Or Hour, Week, Month) and the option "Devices that did not succeed".
When running the task unfortunately the second option is ignored completely. The package is installed every day on every client even on the successful ones. Is this option not supported for policies or is this a bug?
Cause:
This process is working as designed.
As the delivery method being used is a policy as opposed to a push, this acts like a pull from the client to the core. The client will not have access to the task on the core letting it know if it has been successful or not. And as such when the task runs again, the package will be made available to the machine again for installation. And the core will then install the package again.
Whereas a push, pushes the package from the core to the client, with the core having all knowledge of which machines have been successful and which ones have not.
Solution:
To use a push delivery method as opposed to a policy one. The reason is described above.
More information about delivery methods can be found in this article:
Another solution is to use query based distribution, this will then only install the package to machines which do not have the package installed as realised by the query. (If configured correctly)
If you use this method it you can use the following framework to both monitor the installation of the package and distribute it.
Query based distribution:
It is recommend that you read this article for further information on how to create a query so you have a better idea of the framework that I am going to describe:
Create two queries. One that finds the computer without the package installed and one which shows you which computers have the package installed.
Here are some examples of the Query based distribution framework solution:
Here are the two different queries. I have put them in a separate folder for easy administration. As described before the 'Installed' Query will help me monitor the rate of package distribution as the other query is used in the scheduled task package distribution.
This is an example of the installed query, use this as an example for creating your specified to your task and environment
This query will help you monitor what the distribution package has been successfully installed on.
This query is an example of a query you can use to help identify nodes that do not have the package that you want installed on them. Now we have to be careful here as a poorly configured query can give us issues when distributing this package, for example distributing to OS's that do not support the package or servers that you do not want having it. For example the above query will give the following result:
As you can see from this return of the query that some of the machines being brought up are not compatible with the software (Mac OS X) or not desired (Microsoft Windows Server.)
By customising the query further we can eliminate this problem and only target the machine which are compatible and desired:
As you can see I have added two more select statements to help specify what machines i am targeting.
Note that I have used an 'OR' Boolean when selecting the OS this because a windows OS cannot be both windows version 7 and 8
Query return now:
That’s much better the query is now specific and now will only target machines that we want it to. This is why we have to be careful when creating these queries for use in this method as we do not want to target machines that will always fail or that might require a reboot or is not needed, on servers.
Once this queries have been created drag them on to your scheduled package distribution:
Run /Start the task and then your targets will appear:
Now you have complete the customisation and can use any delivery method that you wish and any time interval for the automatic reschedule of the task.