salt/doc/ref/windows-package-manager.rst

227 lines
7.2 KiB
ReStructuredText
Raw Normal View History

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``
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
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'
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
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
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:
9.20.00.0:
2013-02-15 02:36:24 +00:00
installer: salt://win/repo/7zip/7z920-x64.msi
full_name: 7-Zip 9.20 (x64 edition)
2013-02-15 02:36:24 +00:00
reboot: False
install_flags: ' /q '
2013-02-15 02:36:24 +00:00
msiexec: True
uninstaller: salt://win/repo/7zip/7z920-x64.msi
uninstall_flags: ' /qn'
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
$ 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
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.
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
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
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
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
.. _wiki: http://wpkg.org/Category:Silent_Installers