opsi Feature SilentInstall (free)
The opsi feature SilentInstall-provides for administrators the ability to install software on a client without the logged on user being disturbed. This chapter describes the characteristics of this feature and offers a guideline for configuring this new installation method.
Preconditions for the Silent Installation
For using this feature, opsi version 4.0.3. or above is required. Basically the 'opsi-client-agent' version 4.0.3.1 or above is required.
Overview of the SilentInstall feature
The SilentInstall method offers the ability to install a pre-defined list of products on a client, without the user having to interrupt his work. Unlike the installation by the onDemand-Event (push Installation), the SilentInstall method does not display anything on the user desktop.
All displays are suppressed and are not to be seen on any desktop. Of course this feature bears some risk. In case of a problem, e.g. a syntax error of the 'opsi-script' script, there is no way to interact with the installation process, for no dialog windows are shown. So this would result in the 'opsi-script' and so the Event processing not coming to an end, and so no more events will be executed. To avoid this "Worst case scenario", the maximum installation time is limited by a timeout configuration. This timeout value might have to be adapted in case of an extended installation. For further information, see the configuration chapter.
Another very important ability of this feature is the predefined list of products to be installed silently. Contact to the service is established, but different from the usual procedure, the ActionRequests given by the service are ignored. The list of software to be installed is defined by an 'opsi-client-agent' configuration. The "setup" action will be executed for all the products on this list and they do not have to be set to setup. As usual after processing the setup script, also the update script will be executed, if there is one. No product dependencies will be resolved. So either no products containing product dependencies should be installed by the SilentInstall feature, or all the products from the dependency list must be added to the SilentInstall product list. As usual the installation process is completed by sending the installation status and installation logfiles to the service. In summary it is recommended to use the SilentInstall only for products, that meet the following requirements:
-
small packets or installations only
-
little system load: some software installations, so for instance most of the MSI installations, request during installation most of the clients ressources. This could result in a poor system performance remaining for the user.
-
installable within a fixed amount of time: the default timeout for this event is set to 300 seconds. If the installation process has not completed within the timeout, the 'opsi-script' process will be terminated and so the event can be completed.
-
no reboots required: software requesting a reboot should not be installed from the SilentInstall. With the default configuration the event is configured not to process any reboot requests. Without this safety configuration the 'opsi-client-agent' could reboot the client without any warning to the user. This could result in loss of data if there is a logged on user. This could result in an inoperable software installed by SilentInstall without reboot.
Within the default configuration swaudit and hwaudit are installed by this method. The inventory products of opsi meet all the requirements above and so are applicable for this method. With the default configuration the opsi hard- and software inventory are generated on demand, without the need to set the setup action request with the 'opsi-configed'. With this method the inventory information can be generated in real-time operation. Also applicable would be any configuration products, that perform automatic repairs or restore client patches.
Executing the Silent Installation
This event will not be triggered automatically like other events. So there are two ways to perform this event.
The first way is to trigger the event from the opsi webservice, like e.g.:
opsi-admin -d method hostControl_fireEvent silent_install client.domain.local
So this command is scriptable and can be used within scripts that can be combined with an 'at-job' to plan the execution of the event.
As an alternative the event can be triggered by a timer event after a certain amount of time. The default configuration for this event is 6 hours. This value presumes, that a work station usually is in use for 8 hours. So the event would be executed once a day after six hours of uptime. For mor information on configuring and activating this event see the following configuration chapter.
Configuring the opsi-feature: 'SilentInstall'
This chapter is about the default configuration of this feature. The default 'opsiclientd.conf' has got a SilentInstall event. This listing just shows the important options:
Standard Event SilentInstall:
[event_silent_install]
process_shutdown_requests = false
action_processor_productIds = swaudit,hwaudit
action_processor_command = %action_processor.command% /productlist %action_processor_productIds% /silent
action_processor_desktop = winlogon
action_processor_timeout = 300
-
action_processor_productIds
-
This option is an important new property for the event control. For all events that perform product actions, this option can define a list of products. The product list must be given as a comma separated list.
-
-
process_shutdown_request = false
-
this configuration suppresses reboot requests from the 'opsi-script'.
-
-
action_processor_command
-
this prepares the call of 'opsi-script'.
-
-
action_processor_desktop
-
This option defines the desktop to display the 'opsi-script' GUI.
-
-
action_processor_timeout
-
This option sets the timeout for terminating the 'opsi-script'-process.
-
The second event is the Timer Event, which triggers the event after a certain amount of time:
Default Timer Event for SilentInstall
[event_timer_silentinstall]
super = silent_install
type = timer
active = false
interval = 21600
-
super
-
This option defines the event to inherit properties from. As the default configuration the Timer-Event inherits from the event silent_install.
-
-
type
-
This option defines this event configuration to be a Timer-Event.
-
-
active
-
as default this event is not active. To acivate it, set this option to 'true'.
-
-
interval
-
This option defines the intertval to fire the event. The default value is set to 6 hours, so after six hours of uptime the event is triggered the first time and then every other six hours. So this interval should (like any timer intervall) not be too short, otherwise the event would be peformed most of the time and thereby block the execution of other actions. On the other hand the interval also should not be too long, for the 'opsi-client-agent' must be running all that time until the event is triggered. If the client or the 'opsi-client-agent' always is restarted before the interval elapsed, this event never will be triggered.
-
Also the SilentInstall event could be triggered by another system event detected by an WMI request. Therefore a 'wql' option can be specified. How to specify a 'wql' option is to be seen in the event_net_connection section. If the 'wql' option is used, the event should be set to 'active = false' as default, so it can be activated later on when requested.
To trigger the event by a timer, usually it only needs to set a host parameter. Therefore at first a default configuration has to be created. In this case it is sufficient to activate the Timer Event.
To create the standard option the following 'Hostparameter' are to be created by the 'opsi-admin'. Also this configuration could be created by the 'opsi-configed':
opsi-admin -d method config_createBool opsiclientd.event_timer_silentinstall.active "event_timer_silentinstall active" false
So at first this event is disabled for all the clients. Then the event can be enabled for single clients:
opsi-admin -d method configState_create opsiclientd.event_timer_silentinstall.active silentclient.domain.de true
To define the products to be installed, the following entry must be set. If for instance instead of 'swaudit' and 'hwaudit' the product firefox shall be installed, the entries should be created as described above:
opsi-admin -d method config_createUnicode opsiclientd.event_silent_install.action_processor_productIds "event_silent_install productIds" "swaudit,hwaudit" "swaudit,hwaudit"
With this option as the default for all clients the product list for the Silent Install Event is set to swaudit and hwaudit. To change the product list for a single client into 'firefox' execute the following command:
opsi-admin -d method configState_create opsiclientd.event_silent_install.action_processor_productIds client.domain.de "firefox"
As you can see, the product list can be different for each client.