0.9.5.rst 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411
  1. ========================
  2. Salt 0.9.5 Release Notes
  3. ========================
  4. :release: 2012-01-15
  5. Salt 0.9.5 is one of the largest steps forward in the development of Salt.
  6. 0.9.5 comes with many milestones, this release has seen the community of
  7. developers grow out to an international team of 46 code contributors and has
  8. many feature additions, feature enhancements, bug fixes and speed improvements.
  9. .. warning::
  10. Be sure to :ref:`read the upgrade instructions <v0.9.5-msgpack>` about the
  11. switch to msgpack before upgrading!
  12. Community
  13. =========
  14. Nothing has proven to have more value to the development of Salt that the
  15. outstanding community that has been growing at such a great pace around Salt.
  16. This has proven not only that Salt has great value, but also the
  17. expandability of Salt is as exponential as I originally intended.
  18. 0.9.5 has received over 600 additional commits since 0.9.4 with a swath of new
  19. committers. The following individuals have contributed to the development of
  20. 0.9.5:
  21. * Aaron Bull Schaefer
  22. * Antti Kaihola
  23. * Bas Tichelaar
  24. * Brad Barden
  25. * Brian Wagner
  26. * Byron Clark
  27. * Chris Scheller
  28. * Christer Edwards
  29. * Clint Savage
  30. * Corey Quinn
  31. * David Boucha
  32. * Eivind Uggedal
  33. * Eric Poelke
  34. * Evan Borgstrom
  35. * Jed Glazner
  36. * Jeff Schroeder
  37. * Jeffrey C. Ollie
  38. * Jonas Buckner
  39. * Kent Tenney
  40. * Martin Schnabel
  41. * Maxim Burgerhout
  42. * Mitch Anderson
  43. * Nathaniel Whiteinge
  44. * Seth House
  45. * Thomas S Hatch
  46. * Thomas Schreiber
  47. * Tor Hveem
  48. * lzyeval
  49. * syphernl
  50. This makes 21 new developers since 0.9.4 was released!
  51. To keep up with the growing community follow Salt on Ohloh
  52. (http://www.ohloh.net/p/salt), to join the Salt development community, fork
  53. Salt on GitHub, and get coding (https://github.com/saltstack/salt)!
  54. Major Features
  55. ==============
  56. .. _v0.9.5-msgpack:
  57. SPEED! Pickle to msgpack
  58. ------------------------
  59. For a few months now we have been talking about moving away from Python
  60. pickles for network serialization, but a preferred serialization format
  61. had not yet been found. After an extensive performance testing period
  62. involving everything from JSON to protocol buffers, a clear winner emerged.
  63. Message Pack (http://msgpack.org/) proved to not only be the fastest and most
  64. compact, but also the most "salt like". Message Pack is simple, and the code
  65. involved is very small. The msgpack library for Python has been added directly
  66. to Salt.
  67. This move introduces a few changes to Salt. First off, Salt is no longer a
  68. "noarch" package, since the msgpack lib is written in C. Salt 0.9.5 will also
  69. have compatibility issues with 0.9.4 with the default configuration.
  70. We have gone through great lengths to avoid backwards compatibility issues with
  71. Salt, but changing the serialization medium was going to create issues
  72. regardless. Salt 0.9.5 is somewhat backwards compatible with earlier minions. A
  73. 0.9.5 master can command older minions, but only if the :conf_master:`serial`
  74. config value in the master is set to ``pickle``. This will tell the master to
  75. publish messages in pickle format and will allow the master to receive messages
  76. in both msgpack and pickle formats.
  77. Therefore **the suggested methods for upgrading** are either to just upgrade
  78. everything at once, or:
  79. 1. Upgrade the master to 0.9.5
  80. 2. Set :conf_master:`serial` to ``pickle`` in the master config
  81. 3. Upgrade the minions
  82. 4. Remove the ``serial`` option from the master config
  83. Since pickles can be used as a security exploit the ability for a master to
  84. accept pickles from minions at all will be removed in a future release.
  85. C Bindings for YAML
  86. --------------------
  87. All of the YAML rendering is now done with the YAML C bindings. This speeds up
  88. all of the sls files when running states.
  89. Experimental Windows Support
  90. ----------------------------
  91. David Boucha has worked tirelessly to bring initial support to Salt for
  92. Microsoft Windows operating systems. Right now the Salt Minion can run as a
  93. native Windows service and accept commands.
  94. In the weeks and months to come Windows will receive the full treatment and
  95. will have support for Salt States and more robust support for managing Windows
  96. systems. This is a big step forward for Salt to move entirely outside of the
  97. Unix world, and proves Salt is a viable cross platform solution. Big Thanks
  98. to Dave for his contribution here!
  99. Dynamic Module Distribution
  100. ---------------------------
  101. Many Salt users have expressed the desire to have Salt distribute in-house
  102. modules, states, renderers, returners, and grains. This support has been added
  103. in a number of ways:
  104. Modules via States
  105. ```````````````````
  106. Now when salt modules are deployed to a minion via the state system as a file,
  107. then the modules will be automatically loaded into the active running minion
  108. - no restart required - and into the active running state. So custom state
  109. modules can be deployed and used in the same state run.
  110. Modules via Module Environment Directories
  111. ```````````````````````````````````````````
  112. Under the file_roots each environment can now have directories that are used
  113. to deploy large groups of modules. These directories sync modules at the
  114. beginning of a state run on the minion, or can be manually synced via the Salt
  115. module :mod:`salt.modules.saltutil.sync_all`.
  116. The directories are named:
  117. * ``_modules``
  118. * ``_states``
  119. * ``_grains``
  120. * ``_renderers``
  121. * ``_returners``
  122. The modules are pushed to their respective scopes on the minions.
  123. Module Reloading
  124. ----------------
  125. Modules can now be reloaded without restarting the minion, this is done by
  126. calling the :mod:`salt.modules.sys.reload_modules` function.
  127. But wait, there's more! Now when a salt module of any type is added via
  128. states the modules will be automatically reloaded, allowing for modules to be
  129. laid down with states and then immediately used.
  130. Finally, all modules are reloaded when modules are dynamically distributed
  131. from the salt master.
  132. Enable / Disable Added to Service
  133. ---------------------------------
  134. A great deal of demand has existed for adding the capability to set services
  135. to be started at boot in the service module. This feature also comes with an
  136. overhaul of the service modules and initial systemd support.
  137. This means that the :mod:`service state <salt.states.service.running>` can now
  138. accept ``- enable: True`` to make sure a service is enabled at boot, and ``-
  139. enable: False`` to make sure it is disabled.
  140. Compound Target
  141. ---------------
  142. A new target type has been added to the lineup, the compound target. In
  143. previous versions the desired minions could only be targeted via a single
  144. specific target type, but now many target specifications can be declared.
  145. These targets can also be separated by and/or operators, so certain properties
  146. can be used to omit a node:
  147. .. code-block:: bash
  148. salt -C 'webserv* and G@os:Debian or E@db.*' test.ping
  149. will match all minions with ids starting with webserv via a glob and minions
  150. matching the ``os:Debian`` grain. Or minions that match the ``db.*`` regular
  151. expression.
  152. Node Groups
  153. -----------
  154. Often the convenience of having a predefined group of minions to execute
  155. targets on is desired. This can be accomplished with the new nodegroups
  156. feature. Nodegroups allow for predefined compound targets to be declared in
  157. the master configuration file:
  158. .. code-block:: yaml
  159. nodegroups:
  160. group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
  161. group2: 'G@os:Debian and foo.domain.com'
  162. And then used via the ``-N`` option:
  163. .. code-block:: bash
  164. salt -N group1 test.ping
  165. Minion Side Data Store
  166. -----------------------
  167. The data module introduces the initial approach into storing persistent data on
  168. the minions, specific to the minions. This allows for data to be stored on
  169. minions that can be accessed from the master or from the minion.
  170. The Minion datastore is young, and will eventually provide an interface similar
  171. to a more mature key/value pair server.
  172. Major Grains Improvement
  173. -------------------------
  174. The Salt grains have been overhauled to include a massive amount of extra data.
  175. this includes hardware data, os data and salt specific data.
  176. Salt -Q is Useful Now
  177. ---------------------
  178. In the past the salt query system, which would display the data from recent
  179. executions would be displayed in pure Python, and it was unreadable.
  180. 0.9.5 has added the outputter system to the ``-Q`` option, thus enabling the
  181. salt query system to return readable output.
  182. Packaging Updates
  183. =================
  184. Huge strides have been made in packaging Salt for distributions. These
  185. additions are thanks to our wonderful community where the work to set up
  186. packages has proceeded tirelessly.
  187. FreeBSD
  188. -------
  189. Salt on FreeBSD? There a port for that:
  190. http://svnweb.freebsd.org/ports/head/sysutils/py-salt/
  191. This port was developed and added by Christer Edwards. This also marks the
  192. first time Salt has been included in an upstream packaging system!
  193. Fedora and Red Hat Enterprise
  194. ------------------------------
  195. Salt packages have been prepared for inclusion in the Fedora Project and in
  196. EPEL for Red Hat Enterprise 5 and 6. These packages are the result of the
  197. efforts made by Clint Savage (herlo).
  198. Debian/Ubuntu
  199. -------------
  200. A team of many contributors have assisted in developing packages for Debian
  201. and Ubuntu. Salt is still actively seeking inclusion in upstream Debian and
  202. Ubuntu and the package data that has been prepared is being pushed through
  203. the needed channels for inclusion.
  204. These packages have been prepared with the help of:
  205. * Corey
  206. * Aaron Toponce
  207. * and`
  208. More to Come
  209. ------------
  210. We are actively seeking inclusion in more distributions. Primarily getting
  211. Salt into Gentoo, SUSE, OpenBSD, and preparing Solaris support are all turning
  212. into higher priorities.
  213. Refinement
  214. ==========
  215. Salt continues to be refined into a faster, more stable and more usable
  216. application. 0.9.5 comes with more debug logging, more bug fixes and more
  217. complete support.
  218. More Testing, More BugFixes
  219. ---------------------------
  220. 0.9.5 comes with more bugfixes due to more testing than any previous release.
  221. The growing community and the introduction a dedicated QA environment have
  222. unearthed many issues that were hiding under the covers. This has further
  223. refined and cleaned the state interface, taking care of things from minor
  224. visual issues to repairing misleading data.
  225. Custom Exceptions
  226. -----------------
  227. A custom exception module has been added to throw salt specific exceptions.
  228. This allows Salt to give much more granular error information.
  229. New Modules
  230. -----------
  231. :mod:`data <salt.modules.data>`
  232. ```````````````````````````````
  233. The new data module manages a persistent datastore on the minion.
  234. Big thanks to bastichelaar for his help refining this module
  235. :mod:`freebsdkmod <salt.modules.freebsdkmod>`
  236. `````````````````````````````````````````````
  237. FreeBSD kernel modules can now be managed in the same way Salt handles Linux
  238. kernel modules.
  239. This module was contributed thanks to the efforts of Christer Edwards
  240. :mod:`gentoo_service <salt.modules.gentoo_service>`
  241. ```````````````````````````````````````````````````
  242. Support has been added for managing services in Gentoo. Now Gentoo services
  243. can be started, stopped, restarted, enabled, disabled, and viewed.
  244. :mod:`pip <salt.modules.pip>`
  245. `````````````````````````````
  246. The pip module introduces management for pip installed applications.
  247. Thanks goes to whitinge for the addition of the pip module
  248. :mod:`rh_service <salt.modules.rh_service>`
  249. ```````````````````````````````````````````
  250. The rh_service module enables Red Hat and Fedora specific service management.
  251. Now Red Hat like systems come with extensive management of the classic init
  252. system used by Red Hat
  253. :mod:`saltutil <salt.modules.saltutil>`
  254. ```````````````````````````````````````
  255. The saltutil module has been added as a place to hold functions used in the
  256. maintenance and management of salt itself. Saltutil is used to salt the salt
  257. minion. The saltutil module is presently used only to sync extension modules
  258. from the master server.
  259. :mod:`systemd <salt.modules.systemd>`
  260. `````````````````````````````````````
  261. Systemd support has been added to Salt, now systems using this next generation
  262. init system are supported on systems running systemd.
  263. :mod:`virtualenv <salt.modules.virtualenv>`
  264. ```````````````````````````````````````````
  265. The virtualenv module has been added to allow salt to create virtual Python
  266. environments.
  267. Thanks goes to whitinge for the addition of the virtualenv module
  268. :mod:`win_disk <salt.modules.win_disk>`
  269. ```````````````````````````````````````
  270. Support for gathering disk information on Microsoft Windows minions
  271. The windows modules come courtesy of Utah_Dave
  272. :mod:`win_service <salt.modules.win_service>`
  273. `````````````````````````````````````````````
  274. The win_service module adds service support to Salt for Microsoft Windows
  275. services
  276. :mod:`win_useradd <salt.modules.win_useradd>`
  277. `````````````````````````````````````````````
  278. Salt can now manage local users on Microsoft Windows Systems
  279. :mod:`yumpkg5 <salt.modules.yumpkg5>`
  280. `````````````````````````````````````
  281. The yumpkg module introduces in 0.9.4 uses the yum API to interact with the
  282. yum package manager. Unfortunately, on Red Hat 5 systems salt does not have
  283. access to the yum API because the yum API is running under Python 2.4 and Salt
  284. needs to run under Python 2.6.
  285. The yumpkg5 module bypasses this issue by shelling out to yum on systems where
  286. the yum API is not available.
  287. New States
  288. -----------
  289. :mod:`mysql_database <salt.states.mysql_database>`
  290. ``````````````````````````````````````````````````
  291. The new mysql_database state adds the ability to systems running a mysql
  292. server to manage the existence of mysql databases.
  293. The mysql states are thanks to syphernl
  294. :mod:`mysql_user <salt.states.mysql_user>`
  295. ``````````````````````````````````````````
  296. The mysql_user state enables mysql user management.
  297. :mod:`virtualenv <salt.states.virtualenv>`
  298. ``````````````````````````````````````````
  299. The virtualenv state can manage the state of Python virtual environments.
  300. Thanks to Whitinge for the virtualenv state
  301. New Returners
  302. -------------
  303. :mod:`cassandra_returner <salt.returners.cassandra_return>`
  304. ```````````````````````````````````````````````````````````
  305. A returner allowing Salt to send data to a cassandra server.
  306. Thanks to Byron Clark for contributing this returner