2012-12-31 17:43:06 +00:00
|
|
|
===========================
|
|
|
|
Windows Software Repository
|
|
|
|
===========================
|
|
|
|
|
|
|
|
The Salt Windows Software Repository provides a package manager and software
|
|
|
|
repository similar to what is provided by yum and apt on Linux.
|
|
|
|
|
|
|
|
By default, the Windows software repository is found at ``/srv/salt/win/repo``
|
2013-07-21 13:19:00 +00:00
|
|
|
This can be changed in the master config file (default location is ``/etc/salt/master``)
|
|
|
|
by modifying the ``win_repo`` variable.
|
2013-01-01 07:44:49 +00:00
|
|
|
Each piece of software should have its own directory which contains the
|
2012-12-31 17:43:06 +00:00
|
|
|
installers and a package definition file. This package definition file is a
|
2013-03-18 19:59:27 +00:00
|
|
|
YAML file named ``init.sls``.
|
2012-12-31 17:43:06 +00:00
|
|
|
|
|
|
|
The package definition file should look similar to this example for Firefox:
|
|
|
|
``/srv/salt/win/repo/firefox/init.sls``
|
|
|
|
|
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
firefox:
|
|
|
|
17.0.1:
|
|
|
|
installer: 'salt://win/repo/firefox/English/Firefox Setup 17.0.1.exe'
|
|
|
|
full_name: Mozilla Firefox 17.0.1 (x86 en-US)
|
|
|
|
locale: en_US
|
|
|
|
reboot: False
|
|
|
|
install_flags: ' -ms'
|
|
|
|
uninstaller: '%ProgramFiles(x86)%/Mozilla Firefox/uninstall/helper.exe'
|
|
|
|
uninstall_flags: ' /S'
|
|
|
|
16.0.2:
|
|
|
|
installer: 'salt://win/repo/firefox/English/Firefox Setup 16.0.2.exe'
|
|
|
|
full_name: Mozilla Firefox 16.0.2 (x86 en-US)
|
|
|
|
locale: en_US
|
|
|
|
reboot: False
|
|
|
|
install_flags: ' -ms'
|
|
|
|
uninstaller: '%ProgramFiles(x86)%/Mozilla Firefox/uninstall/helper.exe'
|
|
|
|
uninstall_flags: ' /S'
|
|
|
|
15.0.1:
|
|
|
|
installer: 'salt://win/repo/firefox/English/Firefox Setup 15.0.1.exe'
|
|
|
|
full_name: Mozilla Firefox 15.0.1 (x86 en-US)
|
|
|
|
locale: en_US
|
|
|
|
reboot: False
|
|
|
|
install_flags: ' -ms'
|
|
|
|
uninstaller: '%ProgramFiles(x86)%/Mozilla Firefox/uninstall/helper.exe'
|
2013-07-21 13:19:00 +00:00
|
|
|
uninstall_flags: ' /S'
|
|
|
|
|
|
|
|
More examples can be found here: https://github.com/saltstack/salt-winrepo
|
|
|
|
|
|
|
|
The version number and ``full_name`` need to match the output from ``pkg.list_pkgs``
|
|
|
|
so that the status can be verfied when running highstate.
|
|
|
|
Note: It is still possible to succesfully install packages using ``pkg.install``
|
|
|
|
even if they don't match which can make this hard to troubleshoot.
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
$ salt 'test-2008' pkg.list_pkgs
|
|
|
|
test-2008
|
|
|
|
----------
|
|
|
|
7-Zip 9.20 (x64 edition):
|
|
|
|
9.20.00.0
|
|
|
|
Microsoft .NET Framework 4 Client Profile:
|
|
|
|
4.0.30319,4.0.30319
|
|
|
|
Microsoft .NET Framework 4 Extended:
|
|
|
|
4.0.30319,4.0.30319
|
|
|
|
Microsoft Visual C++ 2008 Redistributable - x64 9.0.21022:
|
|
|
|
9.0.21022
|
|
|
|
Mozilla Firefox 17.0.1 (x86 en-US):
|
|
|
|
17.0.1
|
|
|
|
Mozilla Maintenance Service:
|
|
|
|
17.0.1
|
|
|
|
NSClient++ (x64):
|
|
|
|
0.3.8.76
|
|
|
|
Notepad++:
|
|
|
|
6.4.2
|
|
|
|
Salt Minion 0.16.0:
|
|
|
|
0.16.0
|
|
|
|
|
|
|
|
If any of these preinstalled packages already exist in winrepo the full_name
|
|
|
|
will be automatically renamed to their package name during the next update
|
|
|
|
(running highstate or installing another package).
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
test-2008:
|
|
|
|
----------
|
|
|
|
7zip:
|
|
|
|
9.20.00.0
|
|
|
|
Microsoft .NET Framework 4 Client Profile:
|
|
|
|
4.0.30319,4.0.30319
|
|
|
|
Microsoft .NET Framework 4 Extended:
|
|
|
|
4.0.30319,4.0.30319
|
|
|
|
Microsoft Visual C++ 2008 Redistributable - x64 9.0.21022:
|
|
|
|
9.0.21022
|
|
|
|
Mozilla Maintenance Service:
|
|
|
|
17.0.1
|
|
|
|
Notepad++:
|
|
|
|
6.4.2
|
|
|
|
Salt Minion 0.16.0:
|
|
|
|
0.16.0
|
|
|
|
firefox:
|
|
|
|
17.0.1
|
|
|
|
nsclient:
|
|
|
|
0.3.9.328
|
2012-12-31 17:43:06 +00:00
|
|
|
|
2013-03-18 19:59:27 +00:00
|
|
|
Add ``msiexec: True`` if using an MSI installer requiring the use of ``msiexec
|
2013-02-15 02:39:12 +00:00
|
|
|
/i`` to install and ``msiexec /x`` to uninstall.
|
2013-02-15 02:36:24 +00:00
|
|
|
``/srv/salt/win/repo/7zip/init.sls``
|
2012-12-31 17:43:06 +00:00
|
|
|
|
2013-07-12 23:24:12 +00:00
|
|
|
The ``install_flags`` and ``uninstall_flags`` are flags passed to the software
|
|
|
|
installer to cause it to perform a silent install. These can often be found by
|
|
|
|
adding ``/?`` or ``/h`` when running the installer from the command line. A
|
|
|
|
great resource for finding these silent install flags can be found on the WPKG
|
|
|
|
project's wiki_:
|
|
|
|
|
2013-02-15 02:36:24 +00:00
|
|
|
.. code-block:: yaml
|
|
|
|
|
|
|
|
7zip:
|
2013-07-21 13:19:00 +00:00
|
|
|
9.20.00.0:
|
2013-02-15 02:36:24 +00:00
|
|
|
installer: salt://win/repo/7zip/7z920-x64.msi
|
2013-07-21 13:19:00 +00:00
|
|
|
full_name: 7-Zip 9.20 (x64 edition)
|
2013-02-15 02:36:24 +00:00
|
|
|
reboot: False
|
2013-07-21 13:19:00 +00:00
|
|
|
install_flags: ' /q '
|
2013-02-15 02:36:24 +00:00
|
|
|
msiexec: True
|
|
|
|
uninstaller: salt://win/repo/7zip/7z920-x64.msi
|
|
|
|
uninstall_flags: ' /qn'
|
|
|
|
|
2013-07-21 13:19:00 +00:00
|
|
|
|
2012-12-31 17:43:06 +00:00
|
|
|
|
|
|
|
Generate Repo Cache File
|
|
|
|
========================
|
|
|
|
|
|
|
|
Once the sls file has been created, generate the repository cache file with the winrepo runner:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
$ salt-run winrepo.genrepo
|
|
|
|
|
|
|
|
Then update the repository cache file on your minions, exactly how it's done for the Linux package managers:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
2013-05-21 05:30:15 +00:00
|
|
|
$ salt '*' pkg.refresh_db
|
2012-12-31 17:43:06 +00:00
|
|
|
|
|
|
|
|
2012-12-31 17:52:24 +00:00
|
|
|
Install Windows Software
|
|
|
|
========================
|
2012-12-31 17:43:06 +00:00
|
|
|
|
|
|
|
Now you can query the available version of Firefox using the Salt pkg module.
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
$ salt \* pkg.available_version firefox
|
|
|
|
|
|
|
|
{'davewindows': {'15.0.1': 'Mozilla Firefox 15.0.1 (x86 en-US)',
|
|
|
|
'16.0.2': 'Mozilla Firefox 16.0.2 (x86 en-US)',
|
|
|
|
'17.0.1': 'Mozilla Firefox 17.0.1 (x86 en-US)'}}
|
|
|
|
|
|
|
|
As you can see, there are three versions of Firefox available for installation.
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
$ salt \* pkg.install firefox
|
|
|
|
|
2013-05-21 05:30:15 +00:00
|
|
|
The above line will install the latest version of Firefox.
|
2012-12-31 17:43:06 +00:00
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
$ salt \* pkg.install firefox version=16.0.2
|
|
|
|
|
|
|
|
The above line will install version 16.0.2 of Firefox.
|
|
|
|
|
2013-07-21 13:19:00 +00:00
|
|
|
If a different version of the package is already installed it will
|
|
|
|
be replaced with the version in winrepo (only if the package itself supports
|
|
|
|
live updating)
|
2012-12-31 17:43:06 +00:00
|
|
|
|
|
|
|
|
|
|
|
Uninstall Windows Software
|
|
|
|
==========================
|
|
|
|
|
|
|
|
Uninstall software using the pkg module:
|
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
$ salt \* pkg.remove firefox
|
|
|
|
|
2013-06-25 00:09:17 +00:00
|
|
|
$ salt \* pkg.purge firefox
|
|
|
|
|
|
|
|
``pkg.purge`` just executes ``pkg.remove`` on Windows. At some point in the
|
|
|
|
future ``pkg.purge`` may direct the installer to remove all configs and
|
|
|
|
settings for software packages that support that option.
|
|
|
|
|
2012-12-31 17:43:06 +00:00
|
|
|
|
2013-07-28 06:48:04 +00:00
|
|
|
|
2013-07-28 06:50:44 +00:00
|
|
|
Standalone Minion Salt Windows Repo Module
|
|
|
|
==========================================
|
2013-07-28 06:48:04 +00:00
|
|
|
|
2013-07-28 06:50:44 +00:00
|
|
|
In order to facilitate managing a Salt Windows software repo with Salt on a
|
|
|
|
Standalone Minion on Windows, a new module named winrepo has been added to
|
|
|
|
Salt. wirepo matches what is available in the salt runner and allows you to
|
|
|
|
manage the Windows software repo contents. Example: salt \* winrepo.genrepo
|
2013-07-28 06:48:04 +00:00
|
|
|
|
2012-12-31 17:43:06 +00:00
|
|
|
Git Hosted Repo
|
|
|
|
===============
|
|
|
|
|
|
|
|
Windows software package definitions can also be hosted in one or more git
|
2013-05-21 05:30:15 +00:00
|
|
|
repositories. The default repo is one hosted on Github.com by SaltStack,Inc., which
|
2012-12-31 17:43:06 +00:00
|
|
|
includes package definitions for open source software. This repo points to the
|
2013-03-18 19:59:27 +00:00
|
|
|
HTTP or ftp locations of the installer files. Anyone is welcome to send a pull
|
2012-12-31 17:43:06 +00:00
|
|
|
request to this repo to add new package definitions. Browse the repo
|
|
|
|
here: `https://github.com/saltstack/salt-winrepo
|
2012-12-31 17:52:24 +00:00
|
|
|
<https://github.com/saltstack/salt-winrepo>`_ .
|
2012-12-31 17:43:06 +00:00
|
|
|
|
|
|
|
Configure which git repos the master can search for package definitions by
|
|
|
|
modifying or extending the ``win_gitrepos`` configuration option list in the
|
|
|
|
master config.
|
|
|
|
|
|
|
|
Checkout each git repo in ``win_gitrepos``, compile your package repository
|
2013-05-21 05:30:15 +00:00
|
|
|
cache and then refresh each minion's package cache:
|
2012-12-31 17:43:06 +00:00
|
|
|
|
|
|
|
.. code-block:: bash
|
|
|
|
|
|
|
|
$ salt-run winrepo.update_git_repos
|
|
|
|
$ salt-run winrepo.genrepo
|
|
|
|
$ salt \* pkg.refresh_db
|
2013-07-12 23:24:12 +00:00
|
|
|
|
|
|
|
|
|
|
|
.. _wiki: http://wpkg.org/Category:Silent_Installers
|