Delay Baseline Install and add time stamp when started

(imported topic written by mvalle99)

I need to delay the deployment of a baseline.

Need to wait 20 minutes before fixlets within baseline kickoff.

And I want to add a time stamp log file.

Thanks

(imported comment written by jessewk)

What to you mean by “delay the deployment of a baseline”?

Why not just schedule it to start when you want it to start?

Please explain in more detail the task you are trying to accomplish and I’m sure we can help you with an appropriate solution.

-Jesse

(imported comment written by mvalle99)

Jesse.

We are installing the Bigfix client as part of our workstation build.

Currently, the fixlets within the baseline kick off while the build is still completing.

We are constantly rebuilding workstations in our lab. We need to make sure that the Baselines gets installed after the build is complete.

We also need to perform a reboot after a specific fixlet is installed as a componet of a baseline.

We are using a task within the baseline- restart 1200 to perform the reboot.

Thanks!

(imported comment written by jessewk)

My suggestion would be to set a flag (usually a registry key on Windows) that must exist for the baseline action to be applicable. There are several ways to do this… you can add parent relevance to the baseline that looks for the flag, or you can create a retrieved property that returns the value/existence of the flag and target you action only to computers that have the flag set to the right value.

At the end of your build process add a step that sets the flag. Once the flag exists the baseline will kick off. Then at the end of the baseline add an action that unsets the flag.

Will that work for you?

(imported comment written by mvalle99)

Thanks Jesse-

I have thought of that.

However, we want to to put a 20 minute delay after the build is complete or a specific period of time after the bigfix client installs may work also.

Please note that we cannot change the build.

Thanks

(imported comment written by jessewk)

What’s the last step in the build process? You can probably find something to key off of there.

There are ways we can accomplish the 20 minute timing, but I’m hoping we can come up with a better solution.

(imported comment written by mvalle99)

If the last process is running an executable cleanup would I do

wait “cleanup”

But we really want to have the ability to just delay the start of an action.

Thanks!

(imported comment written by jessewk)

There are many problems associated with a timing based approach. For example, what happens if the build process stops or the network transfer is slow? In this case the baseline would kick off too soon. On the other hand, what if it’s really fast? You don’t want the computer to be sitting there doing nothing for 15 minutes.

If the last process is called cleanup, there is likely something that cleanup does, say remove temp directories, set some build keys, etc.

The best plan would be to find something that is on the machine that exists only when you’re ready to go, or find something that does not exist when the build process is finished but does exist prior.

For example, does cleanup leave a log file? You could check the cleanup executable has written the last expected line.

I’m afraid I don’t know much about your build process, but in the long run I think you will be much better off trying to key off the build process vs. trying to key off a time period.

(imported comment written by tim7ad91)

mvalle,

We do something similar with other installs, to avoid msi conflicts. Since the build process is scripted it can handle installs correctly. However when “external” installs start happening (e.g. via GPO’s, Startup scripts, etc) we had to introduce a delay. This is accomplished two different ways.

We use the time stamp of a flag file. In our case it is a “join to domain” log file that is created when the machine is joined to the domain. This is also one of the last items completed in the build. The time difference between the log files’ create time and “now” must be greater than 1 hour.

Although not as flexible, another method is to use the OS install date/time. The install date can be pulled via WMI. The following will give the time since the OS was installed:

q: (now - time value of select “InstallDate from Win32_OperatingSystem” of wmi)

Your baseline could include relevance to look at either of the time differences and if not greater than a certain interval do not start.

(imported comment written by brolly3391)

mvalle99

To answer your original question, if you have BES 6.0 or better clients you can do something like this in action script to generate a hard pause.

Parameter “startClock”="{now}"
Pause while {(now - (parameter “startClock” as time)) < 20*minute}

However, this is an easy way to get yourself into trouble. If the BES Client is busy pausing then other actions will not run until the pause is complete. If your Pause While never goes false you are stuck in a perpetual loop and have to restart the BES Client to break out of it.

The hard part here is identifying 20 minutes after what? You mentioned 20 minutes after the build is complete. How can I tell that the build is complete? Is there a process that stops running or a file that gets laid down or some other event that happens that we can watch to know when to start the 20 minutes?

The MSI installer service will stick around for quite a while (10 minutes is what I have observed) after finishing it’s MSI installs before stopping. Will this work?

(now - boot time of operating system) > 20*minute and not exists running service “MSIServer”

Cheers,

Brolly