2015.5.0.rst 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236
  1. .. _release-2015-5-0:
  2. ==============================================
  3. Salt 2015.5.0 Release Notes - Codename Lithium
  4. ==============================================
  5. The 2015.5.0 feature release of Salt is focused on hardening Salt and mostly
  6. on improving existing systems. A few major additions are present, primarily
  7. the new Beacon system. Most enhancements have been focused around improving
  8. existing features and interfaces.
  9. As usual the release notes are not exhaustive and primarily include the most
  10. notable additions and improvements. Hundreds of bugs have been fixed and many
  11. modules have been substantially updated and added.
  12. .. warning::
  13. In order to fix potential shell injection vulnerabilities in salt modules,
  14. a change has been made to the various ``cmd`` module functions. These
  15. functions now default to ``python_shell=False``, which means that the
  16. commands will not be sent to an actual shell.
  17. The largest side effect of this change is that "shellisms", such as pipes,
  18. will not work by default. The modules shipped with salt have been audited
  19. to fix any issues that might have arisen from this change. Additionally,
  20. the ``cmd`` state module has been unaffected, and use of ``cmd.run`` in
  21. jinja is also unaffected. ``cmd.run`` calls on the CLI will also allow
  22. shellisms.
  23. However, custom execution modules which use shellisms in ``cmd`` calls
  24. will break, unless you pass ``python_shell=True`` to these calls.
  25. As a temporary workaround, you can set ``cmd_safe: False`` in your minion
  26. and master configs. This will revert the default, but is also less secure,
  27. as it will allow shell injection vulnerabilities to be written in custom
  28. code. We recommend you only set this setting for as long as it takes to
  29. resolve these issues in your custom code, then remove the override.
  30. .. note::
  31. Starting in this version of salt, ``pillar_opts`` defaults to False instead
  32. of True. This means that master opts will not be present in minion pillar,
  33. and as a result, ``config.get`` calls will not include master opts.
  34. We recommend pillar is used for configuration options which need to make it
  35. to the minion.
  36. Beacons
  37. =======
  38. The beacon system allows the minion to hook into system processes and
  39. continually translate external events into the salt event bus. The primary
  40. example of this is the :py:mod:`~salt.beacons.inotify` beacon. This beacon uses
  41. inotify to watch configured files or directories on the minion for changes,
  42. creation, deletion etc.
  43. This allows for the changes to be sent up to the master where the reactor can
  44. respond to changes.
  45. Sudo Minion Settings
  46. ====================
  47. It is now possible to run the minion as a non-root user and for the minion to
  48. execute commands via sudo. Simply add `sudo_user: root` to the minion config,
  49. run the minion as a non-root user and grant that user sudo rights to execute
  50. salt-call.
  51. Lazy Loader
  52. ===========
  53. The Lazy Loader is a significant overhaul of Salt's module loader system. The
  54. Lazy Loader will lazily load modules on access instead of all on start. In
  55. addition to a major performance improvement, this "sandboxes" modules so a
  56. bad/broken import of a single module will only affect jobs that require
  57. accessing the broken module. (:issue: `20274`)
  58. Enhanced Active Directory Support
  59. =================================
  60. The eauth system for LDAP has been extended to support Microsoft Active
  61. Directory out of the box. This includes Active Directory and LDAP group support
  62. for eauth.
  63. Salt LXC Enhancements
  64. =====================
  65. The LXC systems have been overhauled to be more consistent and to fix many
  66. bugs.
  67. This overhaul makes using LXC with Salt much easier and substantially improves
  68. the underlying capabilities of Salt's LXC integration.
  69. Salt SSH
  70. ========
  71. - Additional configuration options and command line flags have been added to
  72. configure the scan roster on the fly
  73. - Added support for ``state.single`` in ``salt-ssh``
  74. - Added support for ``publish.publish``, ``publish.full_data``, and
  75. ``publish.runner`` in ``salt-ssh``
  76. - Added support for ``mine.get`` in ``salt-ssh``
  77. New Windows Installer
  78. =====================
  79. The new Windows installer changes how Salt is installed on Windows.
  80. The old installer used bbfreeze to create an isolated python environment to
  81. execute in. This made adding modules and python libraries difficult. The new
  82. installer sets up a more flexible python environment making it easy to manage
  83. the python install and add python modules.
  84. Instead of frozen packages, a full python implementation resides in the bin
  85. directory (``C:\salt\bin``). By executing pip or easy_install from within the
  86. Scripts directory (``C:\salt\bin\Scripts``) you can install any additional
  87. python modules you may need for your custom environment.
  88. The .exe's that once resided at the root of the salt directory (``C:\salt``)
  89. have been replaced by .bat files and should function the same way as the .exe's
  90. in previous versions.
  91. The new Windows Installer will not replace the minion config file and key if
  92. they already exist on the target system. Only the salt program files will be
  93. replaced. ``C:\salt\conf`` and ``C:\salt\var`` will remain unchanged.
  94. Removed Requests Dependency
  95. ===========================
  96. The hard dependency on the requests library has been removed. Requests is still
  97. required by a number of cloud modules but is no longer required for normal Salt
  98. operations.
  99. This removal fixes issues that were introduced with requests and salt-ssh, as
  100. well as issues users experienced from the many different packaging methods used
  101. by requests package maintainers.
  102. Python 3 Updates
  103. ================
  104. While Salt does not YET run on Python 3 it has been updated to INSTALL on
  105. Python 3, taking us one step closer. What remains is getting the test suite to
  106. the point where it can run on Python 3 so that we can verify compatibility.
  107. RAET Additions
  108. ==============
  109. The RAET support continues to improve. RAET now supports multi-master and many
  110. bugs and performance issues have been fixed. RAET is much closer to being a
  111. first class citizen.
  112. Modified File Detection
  113. =======================
  114. A number of functions have been added to the RPM-based package managers to
  115. detect and diff files that are modified from the original package installs.
  116. This can be found in the new pkg.modified functions.
  117. Reactor Update
  118. ==============
  119. Fix an infinite recursion problem for runner/wheel reactor jobs by passing a
  120. "user" (Reactor) to all jobs that the reactor starts. The reactor skips all
  121. events created by that username -- thereby only reacting to events not caused
  122. by itself. Because of this, runner and wheel executions from the runner will
  123. have user "Reactor" in the job cache.
  124. Misc Fixes/Additions
  125. ====================
  126. - SDB driver for etcd. (:issue: `22043`)
  127. - Add ``only_upgrade`` argument to apt-based ``pkg.install`` to only install a
  128. package version if the package is already installed. (Great for security
  129. updates!)
  130. - Joyent now requires a ``keyname`` to be specified in the provider
  131. configuration. This change was necessitated upstream by the 7.0+ API.
  132. - Add ``args`` argument to ``cmd.script_retcode`` to match ``cmd.script`` in
  133. the :py:mod:`cmd module <salt.cmd.cmdmod>`. (:issue: `21122`)
  134. - Fixed bug where TCP keepalive was not being sent on the defined interval on
  135. the return port (4506) from minion to master. (:issue: `21465`)
  136. - LocalClient may now optionally raise SaltClientError exceptions. If using
  137. this class directly, checking for and handling this exception is recommended.
  138. (:issue: `21501`)
  139. - The SAuth object is now a singleton, meaning authentication state is global
  140. (per master) on each minion. This reduces sign-ins of minions from 3->1 per
  141. startup.
  142. - Nested outputter has been optimized, it is now much faster.
  143. - Extensive fileserver backend updates.
  144. Deprecations
  145. ============
  146. - Removed ``parameter`` keyword argument from ``eselect.exec_action`` execution
  147. module.
  148. - Removed ``runas`` parameter from the following ``pip``` execution module
  149. functions: ``install``, ``uninstall``, ``freeze``, ``list_``,
  150. ``list_upgrades``, ``upgrade_available``, ``upgrade``. Please migrate to
  151. ``user``.
  152. - Removed ``runas`` parameter from the following ``pip`` state module
  153. functions: ``installed``, ``removed``, ``uptodate`` . Please migrate to
  154. ``user``.
  155. - Removed ``quiet`` option from all functions in ``cmdmod`` execution module.
  156. Please use ``output_loglevel=quiet`` instead.
  157. - Removed ``parameter`` argument from ``eselect.set_`` state. Please migrate to
  158. ``module_parameter`` or ``action_parameter``.
  159. - The ``salt_events`` table schema has changed to include an additional field
  160. called ``master_id`` to distinguish between events flowing into a database
  161. from multiple masters. If ``event_return`` is enabled in the master config,
  162. the database schema must first be updated to add the ``master_id`` field.
  163. This alteration can be accomplished as follows:
  164. ``ALTER TABLE salt_events ADD master_id VARCHAR(255) NOT NULL;``
  165. Known Issues
  166. ============
  167. - In multi-master mode, a minion may become temporarily unresponsive if modules
  168. or pillars are refreshed at the same time that one or more masters are down.
  169. This can be worked around by setting 'auth_timeout' and 'auth_tries' down to
  170. shorter periods.