salt/doc/topics/tutorials/esky.rst

99 lines
3.7 KiB
ReStructuredText
Raw Normal View History

2012-09-12 05:23:31 +00:00
======================================
Automatic Updates / Frozen Deployments
======================================
.. versionadded:: 0.10.3.d
Salt has support for the
`Esky <https://github.com/cloudmatrix/esky>`_ application freezing and update
tool. This tool allows one to build a complete zipfile out of the salt scripts
and all their dependencies - including shared objects / DLLs.
Getting Started
===============
To build frozen applications, suitable build environment will be needed for
each platform. You should probably set up a virtualenv in order to limit the
scope of Q/A.
2012-09-12 05:23:31 +00:00
This process does work on Windows. Directions are available at
2012-09-12 05:23:31 +00:00
`<https://github.com/saltstack/salt-windows-install>`_ for details on
installing Salt in Windows. Only the 32-bit Python and dependencies have been
tested, but they have been tested on 64-bit Windows.
Install ``bbfreeze``, and then ``esky`` from PyPI in order to enable the
``bdist_esky`` command in ``setup.py``. Salt itself must also be installed, in
addition to its dependencies.
2012-09-12 05:23:31 +00:00
Building and Freezing
=====================
Once you have your tools installed and the environment configured, use
``setup.py`` to prepare the distribution files.
.. code-block:: bash
python setup.py sdist
python setup.py bdist
Once the distribution files are in place, Esky can be used traverse the module
tree and pack all the scripts up into a redistributable.
.. code-block:: bash
python setup.py bdist_esky
There will be an appropriately versioned ``salt-VERSION.zip`` in ``dist/`` if
everything went smoothly.
2012-09-12 05:23:31 +00:00
2012-09-28 00:49:10 +00:00
Windows
-------
``C:\Python27\lib\site-packages\zmq`` will need to be added to the PATH
2014-04-30 20:55:30 +00:00
variable. This helps bbfreeze find the zmq DLL so it can pack it up.
2012-09-28 00:49:10 +00:00
2012-09-12 05:23:31 +00:00
Using the Frozen Build
======================
Unpack the zip file in the desired install location. Scripts like
2012-09-12 05:23:31 +00:00
``salt-minion`` and ``salt-call`` will be in the root of the zip file. The
associated libraries and bootstrapping will be in the directories at the same
level. (Check the `Esky <https://github.com/cloudmatrix/esky>`_ documentation
for more information)
To support updating your minions in the wild, put the builds on a web server
that the minions can reach. :py:func:`salt.modules.saltutil.update` will
2012-09-12 05:23:31 +00:00
trigger an update and (optionally) a restart of the minion service under the
new version.
Troubleshooting
===============
2012-09-12 05:23:31 +00:00
A Windows minion isn't responding
---------------------------------
The process dispatch on Windows is slower than it is on \*nix. It may be
necessary to add '-t 15' to salt commands to give minions plenty of time to
return.
2012-09-28 00:49:10 +00:00
2012-09-12 05:23:31 +00:00
Windows and the Visual Studio Redist
------------------------------------
The Visual C++ 2008 32-bit redistributable will need to be installed on all
2012-09-12 05:23:31 +00:00
Windows minions. Esky has an option to pack the library into the zipfile,
but OpenSSL does not seem to acknowledge the new location. If a
``no OPENSSL_Applink`` error appears on the console when trying to start a
frozen minion, the redistributable is not installed.
2012-09-12 05:23:31 +00:00
Mixed Linux environments and Yum
--------------------------------
The Yum Python module doesn't appear to be available on any of the standard
Python package mirrors. If RHEL/CentOS systems need to be supported, the frozen
build should created on that platform to support all the Linux nodes. Remember
to build the virtualenv with ``--system-site-packages`` so that the ``yum``
module is included.
2012-09-12 05:23:31 +00:00
Automatic (Python) module discovery
-----------------------------------
Automatic (Python) module discovery does not work with the late-loaded scheme
that Salt uses for (Salt) modules. Any misbehaving modules will need to be
explicitly added to the ``freezer_includes`` in Salt's ``setup.py``. Always
check the zipped application to make sure that the necessary modules were
included.