mirror of
https://github.com/valitydev/salt.git
synced 2024-11-07 08:58:59 +00:00
93ee5ee2b0
Well, all but one, which we expect to see
824 lines
31 KiB
ReStructuredText
824 lines
31 KiB
ReStructuredText
.. _release-2016-11-0:
|
|
|
|
==============================================
|
|
Salt 2016.11.0 Release Notes - Codename Carbon
|
|
==============================================
|
|
|
|
New Features
|
|
============
|
|
|
|
Docker Introspection and Configuration
|
|
--------------------------------------
|
|
|
|
Major additions have been made to the Docker support in 2016.11.0. The new
|
|
addition allows Salt to be executed within a Docker container without a
|
|
minion running or installed in the container. This allows states to
|
|
be run inside a container, but also all of Salt's remote execution
|
|
commands to be run inside docker containers as well. This makes
|
|
container introspection simple and powerful. See the tutorial on using
|
|
this new feature here:
|
|
|
|
See :ref:`Salt in Docker Containers <docker-sls>`.
|
|
|
|
Advanced Ceph Control
|
|
---------------------
|
|
|
|
Our friends over at SUSE have delivered a powerful new tool to make the
|
|
deployment of Ceph storage systems using Salt very easy. These new Ceph
|
|
tools allow for a storage system to be easily defined using the new
|
|
`ceph.quorum` state.
|
|
|
|
Thorium Additions and Improvements
|
|
----------------------------------
|
|
|
|
The Thorium advanced reactor has undergone extensive testing and updates.
|
|
These updates include many more Thorium states, a system for automating
|
|
key management, the ability to use Thorium to easily replace old
|
|
reactors and a great deal of stability and bug fixes.
|
|
|
|
State Rollback Using Snapper
|
|
----------------------------
|
|
|
|
Rollback has been one of the most prevalent requests for Salt. We
|
|
have researched it extensively and concluded that the only way to
|
|
accomplish truly reliable rollback would be to execute it at
|
|
the filesystem layer. To accomplish this we have introduced Snapper
|
|
integration into Salt States.
|
|
|
|
Snapper is a tool which allows for simple and reliable snapshots
|
|
of the filesystem to be made. With the new `snapper_states` option
|
|
set to `True` in the minion config a snapshot will be made before
|
|
and after every Salt State run.
|
|
|
|
These snapshots can be viewed, managed and rolled back to via the
|
|
`snapper` execution module.
|
|
|
|
Preserve File Perms in File States
|
|
----------------------------------
|
|
|
|
This feature has been requested for years, the ability to set a flag
|
|
and use the same file permissions for files deployed to a minion as
|
|
the permissions set to the file on the master. Just set the `keep_mode`
|
|
option on any file management state to `True`.
|
|
|
|
Ponies!
|
|
-------
|
|
|
|
We all agreed that cowsay was just not good enough, install the `ponysay`
|
|
command and the new `pony` outputter will work. Fun for the whole family!
|
|
|
|
Additional Features
|
|
-------------------
|
|
|
|
- Minions can run in stand-alone mode to use beacons and engines without
|
|
having to connect to a master. (Thanks @adelcast!)
|
|
- Added a ``salt`` runner to allow running salt modules via salt-run.
|
|
|
|
.. code-block:: bash
|
|
|
|
salt-run salt.cmd test.ping
|
|
# call functions with arguments and keyword arguments
|
|
salt-run salt.cmd test.arg 1 2 3 a=1
|
|
- Added SSL support to Cassandra CQL returner.
|
|
SSL can be enabled by setting ``ssl_options`` for the returner.
|
|
Also added support for specifying ``protocol_version`` when establishing
|
|
cluster connection.
|
|
- The ``mode`` parameter in the :py:mod:`file.managed
|
|
<salt.states.file.managed>` state, and the ``file_mode`` parameter in the
|
|
:py:mod:`file.recurse <salt.states.file.recurse>` state, can both now be set
|
|
to ``keep`` and the minion will keep the mode of the file from the Salt
|
|
fileserver. This works only with files coming from sources prefixed with
|
|
``salt://``, or files local to the minion (i.e. those which are absolute
|
|
paths, or are prefixed with ``file://``). For example:
|
|
|
|
.. code-block:: yaml
|
|
|
|
/etc/myapp/myapp.conf:
|
|
file.managed:
|
|
- source: salt://conf/myapp/myapp.conf
|
|
- mode: keep
|
|
|
|
/var/www/myapp:
|
|
file.recurse:
|
|
- source: salt://path/to/myapp
|
|
- dir_mode: 755
|
|
- file_mode: keep
|
|
|
|
- The ``junos`` state module is now available. It has all the functions
|
|
that are present in the ``junos`` execution module.
|
|
|
|
- The ``junos`` state module is now available. It has all the functions
|
|
that are present in the ``junos`` execution module.
|
|
- The minion data cache is a pluggable data store now. It's configurable with
|
|
:conf_master:`cache` option. Default is ``localfs``.
|
|
- User names in :conf_master:`client_acl` support glob matching now.
|
|
|
|
New Top File Merging Strategy for States
|
|
========================================
|
|
|
|
A new strategy called ``merge_all`` has been added to provide a new way of
|
|
merging top file matches when executing a :ref:`highstate <running-highstate>`.
|
|
See the :conf_master:`top_file_merging_strategy` documentation for further
|
|
information.
|
|
|
|
In addition, the ``same`` merging strategy was not functioning as documented.
|
|
This has now been corrected. While this is technically a bugfix, we decided to
|
|
hold a change in top file merging until a feature release to minimize user
|
|
impact.
|
|
|
|
Improved Archive Extraction Support
|
|
===================================
|
|
|
|
The :py:func:`archive.extracted <salt.states.archive.extracted>` state has been
|
|
overhauled. Notable changes include the following:
|
|
|
|
- When enforcing ownership (with the ``user`` and/or ``group`` arguments), the
|
|
``if_missing`` argument no longer has any connection to which path(s) have
|
|
ownership enforced. Instead, the paths are determined using the either the
|
|
newly-added :py:func:`archive.list <salt.modules.archive.list_>` function, or
|
|
the newly-added ``enforce_ownership_on`` argument.
|
|
- ``if_missing`` also is no longer required to skip extraction, as Salt is now
|
|
able to tell which paths would be present if the archive were extracted. It
|
|
should, in most cases, only be necessary in cases where a semaphore file is
|
|
used to conditionally skip extraction of the archive.
|
|
- Password-protected ZIP archives are now detected before extraction, and the
|
|
state fails without attempting to extract the archive if no password was
|
|
specified.
|
|
- By default, a single top-level directory is enforced, to guard against
|
|
'tar-bombs'. This enforcement can be disabled by setting ``enforce_toplevel``
|
|
to ``False``.
|
|
- The ``tar_options`` and ``zip_options`` arguments have been deprecated in
|
|
favor of a single ``options`` argument.
|
|
- The ``archive_format`` argument is now optional. The ending of the ``source``
|
|
argument is used to guess whether it is a tar, zip or rar file. If the
|
|
``archive_format`` cannot be guessed, then it will need to be specified, but
|
|
in many cases it can now be omitted.
|
|
- Ownership enforcement is now performed irrespective of whether or not the
|
|
archive needed to be extracted. This means that the state can be re-run after
|
|
the archive has been fully extracted to repair changes to ownership.
|
|
|
|
A number of new arguments were also added. See the docs py:func:`docs for the
|
|
archive.extracted state <salt.states.archive.extracted>` for more information.
|
|
|
|
Additionally, the following changes have been made to the :mod:`archive
|
|
<salt.modules.archive>` execution module:
|
|
|
|
- A new function (:py:func:`archive.list <salt.modules.archive.list_>`) has
|
|
been added. This function lists the files/directories in an archive file, and
|
|
supports a ``verbose`` argument that gives a more detailed breakdown of which
|
|
paths are files, which are directories, and which paths are at the top level
|
|
of the archive.
|
|
- A new function (:py:func:`archive.is_encrypted
|
|
<salt.modules.archive.is_encrypted>`) has been added. This function will
|
|
return ``True`` if the archive is a password-protected ZIP file, ``False`` if
|
|
not. If the archive is not a ZIP file, an error will be raised.
|
|
- :py:func:`archive.cmd_unzip <salt.modules.archive.cmd_unzip>` now supports
|
|
passing a password, bringing it to feature parity with
|
|
:py:func:`archive.unzip <salt.modules.archive.unzip>`. Note that this is
|
|
still not considered to be secure, and :py:func:`archive.unzip
|
|
<salt.modules.archive.unzip>` is recommended for dealing with
|
|
password-protected ZIP archives.
|
|
- The default value for the ``extract_perms`` argument to
|
|
:py:func:`archive.unzip <salt.modules.archive.unzip>` has been changed to
|
|
``True``.
|
|
|
|
Improved Checksum Handling in :py:func:`file.managed <salt.states.file.managed>`, :py:func:`archive.extracted <salt.states.archive.extracted>` States
|
|
-----------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
When the ``source_hash`` argument for these states refers to a file containing
|
|
checksums, Salt now looks for checksums matching the name of the source URI, as
|
|
well as the file being managed. Prior releases only looked for checksums
|
|
matching the filename being managed. Additionally, a new argument
|
|
(``source_hash_name``) has been added, which allows the user to disambiguate
|
|
ambiguous matches when more than one matching checksum is found in the
|
|
``source_hash`` file.
|
|
|
|
A more detailed explanation of this functionality can be found in the
|
|
:py:func:`file.managed <salt.states.file.managed>` documentation, in the
|
|
section for the new ``source_hash_name`` argument.
|
|
|
|
.. note::
|
|
This improved functionality is also available in the ``2016.3`` (Boron)
|
|
release cycle, starting with the 2016.3.5 release.
|
|
|
|
Config Changes
|
|
==============
|
|
|
|
The following default config values were changed:
|
|
|
|
- ``gitfs_ssl_verify``: Changed from ``False`` to ``True``
|
|
- ``git_pillar_ssl_verify``: Changed from ``False`` to ``True``
|
|
- ``winrepo_ssl_verify``: Changed from ``False`` to ``True``
|
|
|
|
Grains Changes
|
|
==============
|
|
|
|
- All core grains containing ``VMWare`` have been changed to ``VMware``, which
|
|
is the `official capitalization <https://www.vmware.com>`_. Additionally,
|
|
all references to ``VMWare`` in the documentation have been changed to
|
|
``VMware`` :issue:`30807`. Environments using versions of Salt before and
|
|
after Salt 2016.11.0 should employ case-insensitive grain matching on these
|
|
grains.
|
|
|
|
.. code-block:: jinja
|
|
|
|
{% set on_vmware = grains['virtual'].lower() == 'vmware' %}
|
|
|
|
|
|
- On Windows the ``cpu_model`` grain has been changed to provide the actual cpu
|
|
model name and not the cpu family.
|
|
|
|
Old behavior:
|
|
|
|
.. code-block:: bash
|
|
|
|
root@master:~# salt 'testwin200' grains.item cpu_model
|
|
testwin200:
|
|
----------
|
|
cpu_model:
|
|
Intel64 Family 6 Model 58 Stepping 9, GenuineIntel
|
|
|
|
New behavior:
|
|
|
|
.. code-block:: bash
|
|
|
|
root@master:~# salt 'testwin200' grains.item cpu_model
|
|
testwin200:
|
|
----------
|
|
cpu_model:
|
|
Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
|
|
|
|
|
|
Beacons Changes
|
|
===============
|
|
|
|
- The ``loadavg`` beacon now outputs averages as integers instead of strings.
|
|
(Via :issue:`31124`.)
|
|
|
|
Runner Changes
|
|
==============
|
|
|
|
- Runners can now call out to :ref:`utility modules <writing-utility-modules>`
|
|
via ``__utils__``.
|
|
- ref:`Utility modules <writing-utility-modules>` (placed in
|
|
``salt://_utils/``) are now able to be synced to the master, making it easier
|
|
to use them in custom runners. A :py:mod:`saltutil.sync_utils
|
|
<salt.runners.saltutil.sync_utils>` function has been added to the
|
|
:py:mod:`saltutil runner <salt.runners.saltutil>` to facilitate the syncing of
|
|
utility modules to the master.
|
|
|
|
Pillar Changes
|
|
==============
|
|
|
|
- Thanks to the new :py:mod:`saltutil.sync_utils
|
|
<salt.runners.saltutil.sync_utils>` runner, it is now easier to get
|
|
ref:`utility modules <writing-utility-modules>` synced to the correct
|
|
location on the Master so that they are available in execution modules called
|
|
from Pillar SLS files.
|
|
|
|
Junos Module Changes
|
|
====================
|
|
|
|
- The following new functionalities were added to the junos module
|
|
|
|
- facts - Displays the facts gathered during the connection.
|
|
- shutdown - Shut down or reboot a device running Junos OS.
|
|
- install_config - Modify the configuration of a Junos device.
|
|
- install_os - Install Junos OS software package.
|
|
- zeroize - Remove all configuration information on the Routing Engines and reset all key values on a device.
|
|
- file_copy - Copy file from proxy to the Junos device.
|
|
|
|
Network Automation: NAPALM
|
|
==========================
|
|
|
|
Beginning with 2016.11.0, network automation is included by default in the core
|
|
of Salt. It is based on a the `NAPALM <https://github.com/napalm-automation/napalm>`_
|
|
library and provides facilities to manage the configuration and retrieve data
|
|
from network devices running widely used operating systems such: JunOS, IOS-XR,
|
|
eOS, IOS, NX-OS etc.
|
|
- see `the complete list of supported devices <http://napalm.readthedocs.io/en/latest/support/index.html#supported-devices>`_.
|
|
|
|
The connection is established via the :mod:`NAPALM proxy <salt.proxy.napalm>`.
|
|
|
|
In the current release, the following modules were included:
|
|
|
|
- :mod:`NAPALM grains <salt.grains.napalm>` - Select network devices based on their characteristics
|
|
- :mod:`NET execution module <salt.modules.napalm_network>` - Networking basic features
|
|
- :mod:`NTP execution module <salt.modules.napalm_ntp>`
|
|
- :mod:`BGP execution module <salt.modules.napalm_bgp>`
|
|
- :mod:`Routes execution module <salt.modules.napalm_route>`
|
|
- :mod:`SNMP execution module <salt.modules.napalm_snmp>`
|
|
- :mod:`Users execution module <salt.modules.napalm_users>`
|
|
- :mod:`Probes execution module <salt.modules.napalm_probes>`
|
|
- :mod:`NTP peers management state <salt.states.netntp>`
|
|
- :mod:`SNMP configuration management state <salt.states.netsnmp>`
|
|
- :mod:`Users management state <salt.states.netusers>`
|
|
|
|
Cisco NXOS Proxy Minion
|
|
=======================
|
|
|
|
Beginning with 2016.11.0, there is a proxy minion that can be used to configure
|
|
nxos cisco devices over ssh.
|
|
|
|
- :mod:`Proxy Minion <salt.proxy.nxos>`
|
|
- :mod:`Execution Module <salt.modules.nxos>`
|
|
- :mod:`State Module <salt.states.nxos>`
|
|
|
|
Cisco Network Services Orchestrator Proxy Minion
|
|
================================================
|
|
|
|
Beginning with 2016.11.0, there is a proxy minion to use the Cisco Network
|
|
Services Orchestrator as a proxy minion.
|
|
|
|
- :mod:`Proxy Minion <salt.proxy.cisconso>`
|
|
- :mod:`Execution Module <salt.modules.cisconso>`
|
|
- :mod:`State Module <salt.states.cisconso>`
|
|
|
|
Junos Module Changes
|
|
====================
|
|
|
|
- The following new functionalities were added to the junos module
|
|
|
|
- facts - Displays the facts gathered during the connection.
|
|
- shutdown - Shut down or reboot a device running Junos OS.
|
|
- install_config - Modify the configuration of a Junos device.
|
|
- install_os - Install Junos OS software package.
|
|
- zeroize - Remove all configuration information on the Routing Engines and reset all key values on a device.
|
|
- file_copy - Copy file from proxy to the Junos device.
|
|
|
|
Returner Changes
|
|
================
|
|
|
|
- Any returner which implements a `save_load` function is now required to
|
|
accept a `minions` keyword argument. All returners which ship with Salt
|
|
have been modified to do so.
|
|
|
|
Renderer Changes
|
|
================
|
|
|
|
Added the ability to restrict allowed renderers. Two new config parameters,
|
|
:conf_master:`renderer_whitelist` and :conf_master:`renderer_blacklist` are
|
|
introduced for this purpose.
|
|
|
|
eAuth Changes
|
|
=============
|
|
|
|
- External auth modules' ``auth`` method can return an ACL list for the given
|
|
username instead of ``True``. This list should be in the same format as
|
|
described in the :ref:`eAuth documentation <acl-eauth>`. It will be
|
|
used for the user instead of one set in master config.
|
|
|
|
Example of the ``auth`` method return that allows a user to execute functions
|
|
in the ``test`` and ``network`` modules on the minions that match the ``web*``
|
|
target and allow access to ``wheel`` and ``runner`` modules:
|
|
|
|
.. code-block:: python
|
|
|
|
[{'web*': ['test.*',
|
|
'network.*']},
|
|
'@wheel',
|
|
'@runner']
|
|
|
|
- External auth is supported by :ref:`salt-run <salt-run>` and
|
|
:ref:`salt-key <salt-key>` now. Note that master must be started to
|
|
use them with eAuth.
|
|
|
|
External Module Packaging
|
|
=========================
|
|
|
|
Modules may now be packaged via entry-points in setuptools. See
|
|
:ref:`external module packaging <tutorial-packaging-modules>` tutorial
|
|
for more information.
|
|
|
|
Functionality Changes
|
|
=====================
|
|
|
|
- The ``onfail`` requisite now uses OR logic instead of AND logic.
|
|
:issue:`22370`
|
|
- The consul external pillar now strips leading and trailing whitespace.
|
|
:issue:`31165`
|
|
- The win_system.py state is now case sensitive for computer names. Previously
|
|
computer names set with a state were converted to all caps. If you have a
|
|
state setting computer names with lower case letters in the name that has
|
|
been applied, the computer name will be changed again to apply the case
|
|
sensitive name.
|
|
- The ``mac_user.list_groups`` function in the ``mac_user`` execution module
|
|
now lists all groups for the specified user, including groups beginning with
|
|
an underscore. In previous releases, groups beginning with an underscore were
|
|
excluded from the list of groups.
|
|
- The ``junos.call_rpc`` function in the ``junos`` execution module can now be used
|
|
to call any valid rpc. Earlier it used to call only "get_software_information".
|
|
- A new option for minions called ``master_tries`` has been added. This
|
|
specifies the number of times a minion should attempt to contact a master to
|
|
attempt a connection. This allows better handling of occasional master
|
|
downtime in a multi-master topology.
|
|
- The default hash_type is now sha256 instead of md5. You will need to make sure both
|
|
your master and minion share the same hash_type.
|
|
- Nodegroups consisting of a simple list of minion IDs can now also be declared
|
|
as a yaml list. The below two examples are equivalent:
|
|
|
|
.. code-block:: yaml
|
|
|
|
# Traditional way
|
|
nodegroups:
|
|
- group1: L@host1,host2,host3
|
|
|
|
# New way (optional)
|
|
nodegroups:
|
|
- group1:
|
|
- host1
|
|
- host2
|
|
- host3
|
|
|
|
New Azure ARM Cloud Driver
|
|
==========================
|
|
A new cloud driver has been added for Azure ARM, aka, the Azure Resource
|
|
Manager. The older Azure driver is still required to work with the older Azure
|
|
API. This new driver works with the newer ARM API, which is managed via the
|
|
newer Azure Portal website.
|
|
|
|
|
|
New Modules
|
|
===========
|
|
|
|
Beacons
|
|
-------
|
|
|
|
- :mod:`salt.beacons.avahi_announce <salt.beacons.avahi_announce>`
|
|
- :mod:`salt.beacons.bonjour_announce <salt.beacons.bonjour_announce>`
|
|
- :mod:`salt.beacons.haproxy <salt.beacons.haproxy>`
|
|
- :mod:`salt.beacons.status <salt.beacons.status>`
|
|
|
|
Clouds
|
|
------
|
|
|
|
- :mod:`salt.cloud.clouds.azurearm <salt.cloud.clouds.azurearm>`
|
|
|
|
Engines
|
|
-------
|
|
|
|
- :mod:`salt.engines.hipchat <salt.engines.hipchat>`
|
|
- :mod:`salt.engines.http_logstash <salt.engines.http_logstash>`
|
|
|
|
Modules
|
|
-------
|
|
|
|
- :mod:`salt.modules.boto_cloudwatch_event <salt.modules.boto_cloudwatch_event>`
|
|
- :mod:`salt.modules.celery <salt.modules.celery>`
|
|
- :mod:`salt.modules.ceph <salt.modules.ceph>`
|
|
- :mod:`salt.modules.influx08 <salt.modules.influx08>`
|
|
- :mod:`salt.modules.inspectlib.entities <salt.modules.inspectlib.entities>`
|
|
- :mod:`salt.modules.inspectlib.fsdb <salt.modules.inspectlib.fsdb>`
|
|
- :mod:`salt.modules.inspectlib.kiwiproc <salt.modules.inspectlib.kiwiproc>`
|
|
- :mod:`salt.modules.inspector <salt.modules.inspector>`
|
|
- :mod:`salt.modules.libcloud_dns <salt.modules.libcloud_dns>`
|
|
- :mod:`salt.modules.openstack_mng <salt.modules.openstack_mng>`
|
|
- :mod:`salt.modules.servicenow <salt.modules.servicenow>`
|
|
- :mod:`salt.modules.testinframod <salt.modules.testinframod>`
|
|
- :mod:`salt.modules.win_lgpo <salt.modules.win_lgpo>`
|
|
- :mod:`salt.modules.win_pki <salt.modules.win_pki>`
|
|
- :mod:`salt.modules.win_psget <salt.modules.win_psget>`
|
|
- :mod:`salt.modules.win_snmp <salt.modules.win_snmp>`
|
|
- :mod:`salt.modules.xbpspkg <salt.modules.xbpspkg>`
|
|
|
|
Outputters
|
|
----------
|
|
|
|
- :mod:`salt.output.pony <salt.output.pony>`
|
|
|
|
Pillar
|
|
------
|
|
|
|
- :mod:`salt.pillar.csvpillar <salt.pillar.csvpillar>`
|
|
- :mod:`salt.pillar.http_json <salt.pillar.http_json>`
|
|
- :mod:`salt.pillar.makostack <salt.pillar.makostack>`
|
|
|
|
Returners
|
|
---------
|
|
|
|
- :mod:`salt.returners.zabbix_return <salt.returners.zabbix_return>`
|
|
|
|
Runners
|
|
-------
|
|
|
|
- :mod:`salt.runners.auth <salt.runners.auth>`
|
|
- :mod:`salt.runners.event <salt.runners.event>`
|
|
- :mod:`salt.runners.smartos_vmadm <salt.runners.smartos_vmadm>`
|
|
- :mod:`salt.runners.vistara <salt.runners.vistara>`
|
|
|
|
SDB
|
|
---
|
|
|
|
- :mod:`salt.sdb.env <salt.sdb.env>`
|
|
|
|
States
|
|
------
|
|
|
|
- :mod:`salt.states.boto_cloudwatch_event <salt.states.boto_cloudwatch_event>`
|
|
- :mod:`salt.states.csf <salt.states.csf>`
|
|
- :mod:`salt.states.ethtool <salt.states.ethtool>`
|
|
- :mod:`salt.states.influxdb08_database <salt.states.influxdb08_database>`
|
|
- :mod:`salt.states.influxdb08_user <salt.states.influxdb08_user>`
|
|
- :mod:`salt.states.libcloud_dns <salt.states.libcloud_dns>`
|
|
- :mod:`salt.states.snapper <salt.states.snapper>`
|
|
- :mod:`salt.states.testinframod <salt.states.testinframod>`
|
|
- :mod:`salt.states.win_lgpo <salt.states.win_lgpo>`
|
|
- :mod:`salt.states.win_pki <salt.states.win_pki>`
|
|
- :mod:`salt.states.win_snmp <salt.states.win_snmp>`
|
|
|
|
Thorium
|
|
-------
|
|
|
|
- :mod:`salt.thorium.calc <salt.thorium.calc>`
|
|
- :mod:`salt.thorium.key <salt.thorium.key>`
|
|
- :mod:`salt.thorium.runner <salt.thorium.runner>`
|
|
- :mod:`salt.thorium.status <salt.thorium.status>`
|
|
- :mod:`salt.thorium.wheel <salt.thorium.wheel>`
|
|
|
|
|
|
Deprecations
|
|
============
|
|
|
|
General Deprecations
|
|
--------------------
|
|
|
|
- ``env`` to ``saltenv``
|
|
|
|
All occurrences of ``env`` and some occurrences of ``__env__`` marked for
|
|
deprecation in Salt 2016.11.0 have been removed. The new way to use the salt
|
|
environment setting is with a variable called ``saltenv``:
|
|
|
|
.. code-block:: python
|
|
|
|
def fcn(msg='', env='base', refresh=True, saltenv='base', **kwargs):
|
|
|
|
has been changed to
|
|
|
|
.. code-block:: python
|
|
|
|
def fcn(msg='', refresh=True, saltenv='base', **kwargs):
|
|
|
|
- If ``env`` (or ``__env__``) is supplied as a keyword argument to a function
|
|
that also accepts arbitrary keyword arguments, then a new warning informs the
|
|
user that ``env`` is no longer used if it is found. This new warning will be
|
|
removed in Salt 2017.7.0.
|
|
|
|
.. code-block:: python
|
|
|
|
def fcn(msg='', refresh=True, saltenv='base', **kwargs):
|
|
|
|
.. code-block:: python
|
|
|
|
# will result in a warning log message
|
|
fcn(msg='add more salt', env='prod', refresh=False)
|
|
|
|
- If ``env`` (or ``__env__``) is supplied as a keyword argument to a function
|
|
that does not accept arbitrary keyword arguments, then python will issue an
|
|
error.
|
|
|
|
.. code-block:: python
|
|
|
|
def fcn(msg='', refresh=True, saltenv='base'):
|
|
|
|
.. code-block:: python
|
|
|
|
# will result in a python TypeError
|
|
fcn(msg='add more salt', env='prod', refresh=False)
|
|
|
|
- If ``env`` (or ``__env__``) is supplied as a positional argument to a
|
|
function, then undefined behavior will occur, as the removal of ``env`` and
|
|
``__env__`` from the function's argument list changes the function's
|
|
signature.
|
|
|
|
.. code-block:: python
|
|
|
|
def fcn(msg='', refresh=True, saltenv='base'):
|
|
|
|
.. code-block:: python
|
|
|
|
# will result in refresh evaluating to True and saltenv likely not being a string at all
|
|
fcn('add more salt', 'prod', False)
|
|
|
|
- Deprecations in ``minion.py``:
|
|
|
|
- The ``salt.minion.parse_args_and_kwargs`` function has been removed. Please
|
|
use the ``salt.minion.load_args_and_kwargs`` function instead.
|
|
|
|
Cloud Deprecations
|
|
------------------
|
|
|
|
- The ``vsphere`` cloud driver has been removed. Please use the ``vmware`` cloud driver
|
|
instead.
|
|
|
|
- The ``private_ip`` option in the ``linode`` cloud driver is deprecated and has been
|
|
removed. Use the ``assign_private_ip`` option instead.
|
|
|
|
- The ``create_dns_record`` and ``delete_dns_record`` functions are deprecated and have
|
|
been removed from the ``digital_ocean`` driver. Use the ``post_dns_record`` function
|
|
instead.
|
|
|
|
|
|
Execution Module Deprecations
|
|
-----------------------------
|
|
|
|
- The ``blockdev`` execution module had four functions removed:
|
|
|
|
- dump
|
|
- tune
|
|
- resize2fs
|
|
- wipe
|
|
|
|
The ``disk`` module should be used instead with the same function names.
|
|
|
|
- The ``boto_vpc`` execution module had two functions removed,
|
|
``boto_vpc.associate_new_dhcp_options_to_vpc`` and
|
|
``boto_vpc.associate_new_network_acl_to_subnet`` in favor of more concise function
|
|
names, ``boto_vpc.create_dhcp_options`` and ``boto_vpc.create_network_acl``, respectively.
|
|
|
|
- The ``data`` execution module had ``getval`` and ``getvals`` functions removed
|
|
in favor of one function, ``get``, which combines the functionality of the
|
|
removed functions.
|
|
|
|
- File module deprecations:
|
|
|
|
- The ``contains_regex_multiline`` function was removed. Use ``file.search`` instead.
|
|
- Additional command line options for ``file.grep`` should be passed one at a time.
|
|
Please do not pass more than one in a single argument.
|
|
|
|
- The ``lxc`` execution module has the following changes:
|
|
|
|
- The ``run_cmd`` function was removed. Use ``lxc.run`` instead.
|
|
- The ``nic`` argument was removed from the ``lxc.init`` function. Use ``network_profile``
|
|
instead.
|
|
- The ``clone`` argument was removed from the ``lxc.init`` function. Use ``clone_from``
|
|
instead.
|
|
- passwords passed to the ``lxc.init`` function will be assumed to be hashed, unless
|
|
``password_encrypted=False``.
|
|
- The ``restart`` argument for ``lxc.start`` was removed. Use ``lxc.restart`` instead.
|
|
- The old style of defining lxc containers has been removed. Please use keys under which
|
|
LXC profiles should be configured such as ``lxc.container_profile.profile_name``.
|
|
|
|
- The ``env`` and ``activate`` keyword arguments have been removed from the ``install``
|
|
function in the ``pip`` execution module. The use of ``bin_env`` replaces both of these
|
|
options.
|
|
|
|
- ``reg`` execution module
|
|
|
|
Functions in the ``reg`` execution module had misleading and confusing names
|
|
for dealing with the Windows registry. They failed to clearly differentiate
|
|
between hives, keys, and name/value pairs. Keys were treated like value names.
|
|
There was no way to delete a key.
|
|
|
|
New functions were added in 2015.5 to properly work with the registry. They
|
|
also made it possible to edit key default values as well as delete an entire
|
|
key tree recursively. With the new functions in place, the following functions
|
|
have been deprecated:
|
|
|
|
- read_key
|
|
- set_key
|
|
- create_key
|
|
- delete_key
|
|
|
|
Use the following functions instead:
|
|
|
|
- for ``read_key`` use ``read_value``
|
|
- for ``set_key`` use ``set_value``
|
|
- for ``create_key`` use ``set_value`` with no ``vname`` and no ``vdata``
|
|
- for ``delete_key`` use ``delete_key_recursive``. To delete a value, use
|
|
``delete_value``.
|
|
|
|
- The ``hash_hostname`` option was removed from the ``salt.modules.ssh`` execution
|
|
module. The ``hash_known_hosts`` option should be used instead.
|
|
|
|
- The ``human_readable`` option was removed from the ``uptime`` function in the
|
|
``status`` execution module. The function was also updated in 2015.8.9 to return
|
|
a more complete offering of uptime information, formatted as an easy-to-read
|
|
dictionary. This updated function replaces the need for the ``human_readable``
|
|
option.
|
|
|
|
- The ``persist`` kwarg was removed from the ``win_useradd`` execution module. This
|
|
option is no longer supported for Windows. ``persist`` is only supported as part
|
|
of user management in UNIX/Linux.
|
|
|
|
- The ``zpool_list`` function in the ``zpool`` execution module was removed. Use ``list``
|
|
instead.
|
|
|
|
|
|
Outputter Module Deprecations
|
|
-----------------------------
|
|
|
|
- The ``compact`` outputter has been removed. Set ``state_verbose`` to ``False`` instead.
|
|
|
|
|
|
Runner Module Deprecations
|
|
--------------------------
|
|
|
|
- The ``grains.cache`` runner no longer accepts ``outputter`` or ``minion`` as keyword arguments.
|
|
Users will need to specify an outputter using the ``--out`` option. ``tgt`` is
|
|
replacing the ``minion`` kwarg.
|
|
|
|
- The ``fileserver`` runner no longer accepts the ``outputter`` keyword argument. Users will
|
|
need to specify an outputter using the ``--out`` option.
|
|
|
|
- The ``jobs`` runner no longer accepts the ``outputter`` keyword argument. Users will need to
|
|
specify an outputter using the ``--out`` option.
|
|
|
|
- ``virt`` runner module:
|
|
|
|
- The ``hyper`` kwarg was removed from the ``init``, ``list``, and ``query`` functions.
|
|
Use the ``host`` option instead.
|
|
- The ``next_hyper`` function was removed. Use the ``next_host`` function instead.
|
|
- The ``hyper_info`` function was removed. Use the ``host_info`` function instead.
|
|
|
|
|
|
State Module Deprecations
|
|
-------------------------
|
|
|
|
- The ``env`` and ``activate`` keyword arguments were removed from the ``installed``
|
|
function in the ``pip`` state module. The use of ``bin_env`` replaces both of these
|
|
options.
|
|
|
|
- ``reg`` state module
|
|
|
|
The ``reg`` state module was modified to work with the new functions in the
|
|
execution module. Some logic was left in the ``reg.present`` and the
|
|
``reg.absent`` functions to handle existing state files that used the final
|
|
key in the name as the value name. That logic has been removed so you now must
|
|
specify value name (``vname``) and, if needed, value data (``vdata``).
|
|
|
|
For example, a state file that adds the version value/data pair to the
|
|
Software\\Salt key in the HKEY_LOCAL_MACHINE hive used to look like this:
|
|
|
|
.. code-block:: yaml
|
|
|
|
HKEY_LOCAL_MACHINE\\Software\\Salt\\version:
|
|
reg.present:
|
|
- value: 2016.3.1
|
|
|
|
Now it should look like this:
|
|
|
|
.. code-block:: yaml
|
|
|
|
HKEY_LOCAL_MACHINE\\Software\\Salt
|
|
reg.present:
|
|
- vname: version
|
|
- vdata: 2016.3.1
|
|
|
|
A state file for removing the same value added above would have looked like
|
|
this:
|
|
|
|
.. code-block:: yaml
|
|
|
|
HKEY_LOCAL_MACHINE\\Software\\Salt\\version:
|
|
reg.absent:
|
|
|
|
Now it should look like this:
|
|
|
|
.. code-block:: yaml
|
|
|
|
HKEY_LOCAL_MACHINE\\Software\\Salt
|
|
reg.absent:
|
|
- vname: version
|
|
|
|
This new structure is important as it allows salt to deal with key default
|
|
values which was not possible before. If vname is not passed, salt will work
|
|
with the default value for that hive\key.
|
|
|
|
Additionally, since you could only delete a value from a the state module, a
|
|
new function (``key_absent``) has been added to allow you to delete a registry
|
|
key and all subkeys and name/value pairs recursively. It uses the new
|
|
``delete_key_recursive`` function.
|
|
|
|
For additional information see the documentation for the ``reg`` execution and
|
|
state modules.
|
|
|
|
- ``lxc`` state module: The following functions were removed from the ``lxc`` state
|
|
module:
|
|
|
|
- ``created``: replaced by the ``present`` state.
|
|
- ``started``: replaced by the ``running`` state.
|
|
- ``cloned``: replaced by the ``present`` state. Use the ``clone_from`` argument
|
|
to set the name of the clone source.
|
|
|
|
- The ``hash_hostname`` option was removed from the ``salt.states.ssh_known_hosts``
|
|
state. The ``hash_known_hosts`` option should be used instead.
|
|
|
|
- The ``always`` kwarg used in the ``built`` function of the ``pkgbuild`` state module
|
|
was removed. Use ``force`` instead.
|
|
|
|
|
|
Utils Module Deprecations
|
|
-------------------------
|
|
|
|
- The use of ``jid_dir`` and ``jid_load`` were removed from the
|
|
``salt.utils.jid``. ``jid_dir`` functionality for job_cache management was moved to
|
|
the ``local_cache`` returner. ``jid_load`` data is now retrieved from the
|
|
``master_job_cache``.
|
|
|
|
- ``ip_in_subnet`` function in ``salt.utils.network.py`` has been removed. Use the
|
|
``in_subnet`` function instead.
|
|
|
|
- The ``iam`` utils module had two functions removed: ``salt.utils.iam.get_iam_region``
|
|
and ``salt.utils.iam.get_iam_metadata`` in favor of the aws utils functions
|
|
``salt.utils.aws.get_region_from_metadata`` and ``salt.utils.aws.creds``, respectively.
|