neulab/tldr huggingface dataset:
• de58c52d66 Merge branch 'update_mac_build_scripts' of https://github.com/twangboy/salt into update_mac_build_scripts
• e7f08d5349 Update static requirements
• a53977de5b Merge branch 'update_mac_build_scripts' of github.com:twangboy/salt into update_mac_build_scripts
• 04e5cde9dd pkg/osx/req_ext.txt no longer exists
• be4a272d07 Update static requirements
• 02dfe4119c Add pyobjc in its own requirements file
• 6b2ac2be64 Remove pyobjc, enforce pip install location
• 30ca5d04ec Remove cryptography, it gets installed by pyopenssl
• fda8abf4a8 Update static requirements
• 732ecc83c1 Update pre-commit config
• 1fa9864e3d Don't set a version for pyopenssl
• 461b198978 Update dependencies, remove req_ext.txt
• PR #56418: (Ch3LL) Ensure version.py included before we install @ 2020-03-23 18:27:46 UTC
• 74575a6993 Merge pull request #56418 from Ch3LL/egg_version
• 85d7c784ef Fix integration setup egg test
• a8a22a4040 Ensure version.py included before we install
• 86fe450c82 Fix #56433 - test_pip_installed_specific_env
• PR #56403: (frogunder) update 3000.1 releasenotes @ 2020-03-17 23:50:21 UTC
• 249367b462 Merge pull request #56403 from frogunder/update_releasenotes_3000.1
• 9d972c96e8 update 3000.1 releasenotes
• PR #56398: (Ch3LL) Add additional PRs to 3000.1 changelog @ 2020-03-17 18:08:15 UTC
• 0de5c1e136 Merge pull request #56398 from Ch3LL/change_3000.1
• 79c337b3db Add additional PRs to 3000.1 changelog
• PR #56376: (twangboy) Fix win deps @ 2020-03-17 17:02:46 UTC
• 5ac09decb9 Merge pull request #56376 from twangboy/fix_win_deps
• 6c83beeb9e Fix win deps
• PR #56378: (Ch3LL)  Include _version.py if building wheel @ 2020-03-17 17:01:33 UTC
• e72a8d2cbc Merge pull request #56378 from Ch3LL/wheel_version
• 22cccd2107 Use virtualenv test helper that already exists and fix setup.py
• 293b1fddf2 cleanup code
• ddfb065bfb add bdist_wheel test
• fceff0287c ensure name is included in new version
• 0cbf6d3246 Ensure SaltStackVersion attributes in _version.py correct
• 39cdf5382d Include _version.py if building wheel
• PR #56387: (bryceml) update gpg key expiration date @ 2020-03-17 16:59:30 UTC
• 6a9326fb70 Merge pull request #56387 from bryceml/update_gpg_key
• b74b26ccf3 update gpg key expiration date
• PR #55822: (cmcmarrow) fix_Indefinitely_code @ 2020-03-16 17:34:11 UTC
• fcee692c4a Merge pull request #55822 from cmcmarrow/win_task_repeat
• e257fb2804 Merge branch 'master' into win_task_repeat
• 07cada0f8f Merge branch 'master' into win_task_repeat
• 4b80301338 Merge branch 'master' into win_task_repeat
• 9df94569c4 Merge branch 'master' into win_task_repeat
• 22a2d0b9ec Merge branch 'master' into win_task_repeat
• dee9c134e7 Merge branch 'master' into win_task_repeat
• beaf05d514 Update test_win_task.py
• 6e923f75fc Merge branch 'master' into win_task_repeat
• 5839da81ee add test
• 2aa6338ed0 fix Indefinitely code
• PR #56373: (frogunder) update 3000.1 releasenotes @ 2020-03-13 18:58:43 UTC
• c11ef89200 Merge pull request #56373 from frogunder/releasenotes_3000.1
• a5ca8b5277 Fix doc test errors
• 47e483187e update 3000.1 releasenotes
• PR #56365: (Ch3LL) Update 3000.1 changelog @ 2020-03-13 17:21:02 UTC
• 62857a9f0e Merge pull request #56365 from Ch3LL/changelog_3000.1
• 851d7d8fc7 Update 3000.1 changelog
• PR #56360: (Ch3LL) Use virtualenv 20.0.10 for macosx tests @ 2020-03-13 16:39:57 UTC
• a660e96fb2 Merge pull request #56360 from Ch3LL/mac_virtual
• abda125086 Update static requirements files
• dca3390c0c skip zcbuildout state test when virtualenv 20.0.0
• fdeae1f0e1 Use virtualenv 20.0.10 for macosx tests
• ISSUE #56324: (kiemlicz) Cannot use Saltcheck module (refs: #56327)
• PR #56327: (mchugh19) keep cache_copied_files variable a list @ 2020-03-13 16:39:32 UTC
• d8fc07274c Merge pull request #56327 from mchugh19/56324
• e1e2df2b1d Merge branch 'master' into 56324
• 6d7572706d use includes for saltcheck integration test
• 5b7073b01d keep cache_copied_files variable a list
• PR #56023: (cmcmarrow) add fix for bin_env @ 2020-03-13 16:39:09 UTC
• 2d31d61ab9 Merge pull request #56023 from cmcmarrow/binary_fix_pip_bin_env
• f780fd013e Merge branch 'master' into binary_fix_pip_bin_env
• d642c7c270 Merge branch 'master' into binary_fix_pip_bin_env
• 82b39d26f8 Merge branch 'binary_fix_pip_bin_env' of https://github.com/cmcmarrow/salt into binary_fix_pip_bin_env
• a5fa22528a Merge branch 'master' into binary_fix_pip_bin_env
• 10ca0fa5d6 fix space
• 22fff6c180 fix _pip_bin_env
• d5425e6630 Merge branch 'master' into binary_fix_pip_bin_env
• ceda3fde00 add full support for when missing kwargs or args
• cf4ab215b5 add fix for bin_env
• PR #56310: (twangboy) Only process ADMX files when loading policies @ 2020-03-11 23:47:50 UTC
• 19bb6aae0c Merge pull request #56310 from twangboy/fix_lgpo_admx
• 4bc5b05586 Fix some lint
• ce282f9754 Mark destructive test
• 8af09c31ca Add test case
• 547d35cf4c Only process ADMX files when loading policies
• PR #56272: (twangboy) Properly resolve the policy name @ 2020-03-11 22:11:02 UTC
• 2d78931eaf Merge pull request #56272 from twangboy/fix_lgpo_names
• 233ed12472 Add comments to helper function
• a7369e41d7 Remove redundent code... some more
• 1db3052b94 Consolidate duplicate code
• b25b56299d Fix failing PY2 tests
• 36a24ac28f Only load adml data once
• bc13be6850 Add some tests
• 2e9be6e461 Properly resolve the policy name
• PR #56358: (s0undt3ch) Fix version instantiation when minor is an empty string @ 2020-03-11 22:10:04 UTC
• c6c6e2e3d9 Merge pull request #56358 from s0undt3ch/hotfix/version-parsing
• cb22e78502 Fix version instantiation when minor is an empty string
• PR #56160: (twangboy) Fix issue with existing reg_dword entries @ 2020-03-11 22:09:21 UTC
• b33047c574 Merge pull request #56160 from twangboy/fix_reg_dword
• 80650c2a8c Make test more explicit
• 67dd1c18c7 Fix issue with existing reg_dword entries
• PR #56337: (twangboy) Handle Adapter Type 53 and Undefined Types @ 2020-03-11 22:08:19 UTC
• 8f23706871 Merge pull request #56337 from twangboy/fix_win_network_type
• 18a31a0b22 Merge branch 'master' into fix_win_network_type
• d92914ad91 Merge branch 'master' into fix_win_network_type
• 224629bdeb Handle Adapter Type 53 and Undefined Types
• PR #56060: (twangboy) Fix regex string for **Del and **DelVals @ 2020-03-11 22:05:43 UTC
• e551ff6a31 Merge pull request #56060 from twangboy/fix_lgpo_regex
• ca260ef582 Use byte-strings in the test
• 7c81874a5b Add some tests
• 944b022f33 Fix regex string for **Del and **DelVals
• ISSUE #56131: (thusoy) Salt v3000 crashes with unless clause if pip is missing (refs: #56215)
• PR #56215: (dwoz) Fix for unless requisite when pip is not installed @ 2020-03-11 22:04:30 UTC
• c9bc9431c1 Merge pull request #56215 from dwoz/issue-56131
• 5dd8f8eabe Fix linter
• 7492c2f7c7 Remove crufty prints from test
• 8ceaa6e6f3 Only remove pip relasted modules
• 69b21e5e68 Add regression test for issue 56131
• 9d23f55adc Fix for unless requisite when pip is not installed
• PR #56339: (twangboy) Fix win_dns_client when used with scheduler @ 2020-03-11 22:01:32 UTC
• 74b67ea741 Merge pull request #56339 from twangboy/fix_win_dns_client
• d6a4fbe85d Fix bad test (lint)
• 47bd67373f Add some tests
• 995975649a Add missing import, improve docs
• ISSUE #56288: (lorengordon) win_lgpo: lgpo.set with secedit policy always generates KeyError: u'lgpo.secedit_data' (refs: #56290)
• PR #56290: (lorengordon) Ensures popping lgpo.secedit_data does not throw KeyError @ 2020-03-11 17:27:04 UTC
• 7701e8762d Merge pull request #56290 from lorengordon/pop-secdata
• 62453bb6ce Merge branch 'master' into pop-secdata
• 95d5cea9ff Merge branch 'master' into pop-secdata
• 2979158a8b Tests the if _secedits: logic path in lgpo.set_
• d1f776178c Ensures popping lgpo.secedit_data does not throw KeyError
• ISSUE #56119: (finalduty) Release notes for v3000 do not mention changes to slspath variable (refs: #56341)
• PR #56341: (dwoz) Revert "Don't remove one directory level from slspath" @ 2020-03-11 17:03:33 UTC
• 84c60708cd Merge pull request #56341 from dwoz/issue-56119
• afe6e84c36 Clarify slspath documentation
• 6dfc098fd1 Add debug for test asserts
• 9fa9dab8b2 Fix linter warts
• fd702bdd44 Add regression test for #56119
• 3d3b673cec Revert "Don't remove one directory level from slspath"
• PR #56185: (terminalmage) Fix regression in service states with reload argument @ 2020-03-11 16:45:58 UTC
• 4f9813a49c Merge pull request #56185 from terminalmage/issue56167
• 65b3f4c9a0 Merge branch 'master' into issue56167
• 7b41a00b4f Merge branch 'master' into issue56167
• 8f7034d946 Merge branch 'master' into issue56167
• e9fbb634e1 Skip on OSX for now
• 5996280241 Add __opts__ and __grains__ just in case
• af3e841d08 Fix failing test
• 586f21aedc Add functional test
• 1afb9c10f0 Fix regression in service states with reload argument
• PR #56068: (s0undt3ch) Update the bootstrap script to latest version, v2020.02.24 @ 2020-03-11 16:44:23 UTC
• 74f8b2a926 Merge pull request #56068 from s0undt3ch/hotfix/update-bootstrap
• ce83b190ed Merge branch 'master' into hotfix/update-bootstrap
• ccd231d82d Merge branch 'master' into hotfix/update-bootstrap
• 88a52f88ff Update the bootstrap script to latest version, v2020.02.24
• 012fb5bc4b Update the bootstrap script to latest version, v2020.02.04
• PR #56321: (oeuftete) Tidy up formatting in boto_secgroup docs @ 2020-03-11 08:14:48 UTC
• 154257e2e9 Merge pull request #56321 from oeuftete/tidy-boto-secgroup-docs
• 616f11b33e Merge branch 'master' into tidy-boto-secgroup-docs
• 412bb4d62d Tidy up formatting in boto_secgroup docs
• PR #56336: (Ch3LL) Fix test_issue_2594_non_invalidated_cache test (update zope.interface) @ 2020-03-11 00:08:43 UTC
• 11d33e3d90 Merge pull request #56336 from Ch3LL/fix_56330
• bbf37e090b Fix test_issue_2594_non_invalidated_cache test (update zope.interface)
• PR #56346: (frogunder) Update man pages to 3000.1 @ 2020-03-11 00:07:31 UTC
• a640bd30fc Merge pull request #56346 from frogunder/man_pages_3000_1
• 6d7c1b6482 Update man pages to 3000.1
• PR #56099: (s0undt3ch) Fix Windows and macOS requirements handling in setup.py @ 2020-03-11 00:04:37 UTC
• 2f783d247e Merge pull request #56099 from s0undt3ch/hotfix/requirements
• c19f4a3fae Merge branch 'master' into hotfix/requirements
• 1e7bc8fc8f Also take into account macOS requirements
• 7eef14952c Also include req_win.txt
• PR #56218: (raddessi) Changed StrictVersion checking of setuptools to LooseVersion @ 2020-03-10 23:59:54 UTC
• 7c4d879073 Merge pull request #56218 from raddessi/master.v3000-conda
• 44556f6d57 Merge branch 'master' into master.v3000-conda
• 566c03b786 Merge branch 'master' into master.v3000-conda
• 82773a9799 Removed now-unused StrictVersion import from setup.py
• 31bb0f7cd1 Changed StrictVersion checking of setuptools to LooseVersion
• PR #56128: (waynew) Update CHANGELOG with release date and unreleased. @ 2020-03-10 23:58:15 UTC
• acbd3556e5 Merge pull request #56128 from waynew/master
• e3216db3e5 Update CHANGELOG with release date and unreleased.
• PR #55937: (twangboy) Update windows build scripts @ 2020-03-10 23:55:55 UTC
• 12140545ab Merge pull request #55937 from twangboy/update_deps
• f00a504a48 Add back the pylauncher
• 30b9c32356 Revert changes to req and req_win
• 98dc0e970c Fix some warts in the build_env scripts
• 8404141f65 Update dependencies
• PR #55906: (sjorge) smartos.vm_present could not handle nics with vrrp_vrid property @ 2020-03-10 23:54:44 UTC
• 485a47cdf1 Merge pull request #55906 from sjorge/smartos_vrrp
• 5bd7dd009a Merge branch 'master' into smartos_vrrp
• f77719c179 smartos state should handle vrrp config
• ISSUE #55185: (sjorge) salt.modules.pdbedit doesn't work on samba older than 4.8 (refs: #55894)
• PR #55894: (sjorge) #55185 pdbedit module should check for version 4.8.x or newer @ 2020-03-10 23:54:21 UTC
• 1fa8555360 Merge pull request #55894 from sjorge/pdbedit_55185
• 9dc7b71122 Merge branch 'master' into pdbedit_55185
• ISSUE #56195: (lorengordon) Windows: Using inline powershell in args with cmd.script and shell: powershell (refs: #56197)
• PR #56197: (lorengordon) Allows use of inline powershell for cmd.script args @ 2020-03-10 23:52:47 UTC
• 3e57d58db2 Merge pull request #56197 from lorengordon/file-or-no-file
• fcd1699f5e Allows use of inline powershell for cmd.script args
• be2e67c0a0 Tests that powershell processes inline powershell in args
• ISSUE #53152: (jbeaird) daily highstate fails after 2019.2 upgrade (refs: #56149)
• PR #56149: (garethgreenaway) [master] Fix to scheduler for use of when and splay @ 2020-03-10 23:52:16 UTC
• 547c73e4cc Merge pull request #56149 from garethgreenaway/53152_fix_schedule_when_splay
• 8f068f6f9b Fix for when using a combination of when and splay. Previously comparing the wrong value when determining if the job should be run and next_fire_time updated.  This resulted in multiple job runs when when and splay were used together.  Code updated and test updated to ensure only one run at the specific time.  Skip eval tests is dateutil.parser is unavailable.
• PR #56345: (s0undt3ch) Bump Windows Py3 builds timeout to 10 hours @ 2020-03-10 20:43:41 UTC
• 192ce76a95 Merge pull request #56345 from s0undt3ch/hotfix/win-py3-timeouts
• 11bdc38ae3 Bump Windows 2019 Py3 builds timeout to 10 hours
• PR #55888: (s0undt3ch) Disable codecov PR comments and status checks @ 2020-03-10 15:45:52 UTC
• a204906c80 Merge pull request #55888 from s0undt3ch/hotfix/coverage-reporting
• 4b8dc8a586 Disable codecov PR comments and status checks
• cb0f4dff87 Apply the suggestion given by the codecov team
• ISSUE #56177: (jodok) mysql states fail because conv is `` instead of None (refs: #56174)
• ISSUE #56170: (jeffdyke) mariadb socket access must be enabled before highstate - salt 3K still tries empty password (refs: #56174)
• ISSUE #56124: (ymasson) MySQL state and module broken after upgrade to 3000 (refs: #56174)
• PR #56174: (garethgreenaway) [master] MySQL module fixes @ 2020-03-10 04:03:23 UTC
• 3e913631bb Merge pull request #56174 from garethgreenaway/56124_mysql_module_state_fixes
• fcc061368b Removing quotes from the plugin_status query.  Updating tests to reflect changes.
• 3dc66393b2 Adding better error reporting around plugins.  Updating tests.  Only attempt to delete a user if they exist.
• 1337da1e4e Ensure _mysql_user_exists is using auth_socket.  Updating mysql and mariadb chpass functions to ensure that the respective plugins are enabled before attempting to use them.
• 34995ba4e8 Reworking the unix_socket code to support the differences between MySQL and MariaDB.  Adding some functions to install, remove, and check the status of plugins which we can then use when adding users which will use the unix_socket & auth_socket plugins. Adding additional tests for these new functions as well as test to ensure the correct SQL is being generated when using passwordless and unix_socket options.
• 5bfd67c13e Minor tweak to mysql module.  Fixing failing tests.
• e871a3ffd1 Various fixes to the mysql module to break out the handling of user management into different functions based on MySQL variant.
• ISSUE #56063: (terminalmage) [master] Traceback in esxi grain module on import (refs: #56094)
• PR #56094: (dwoz) Fix type error in TornadoImporter @ 2020-03-10 01:39:08 UTC
• 211c88bfbc Merge pull request #56094 from dwoz/fix_56063
• 7b1632e8e3 Fix type error in TornadoImporter
• PR #56172: (Ch3LL) Only change mine data if using new allow_tgt feature @ 2020-03-10 01:34:27 UTC
• fb5252fc53 Merge pull request #56172 from Ch3LL/mine_g
• f4c9c2a5cf Fix docs
• 6c914caec8 Use different targeting for windows/linux
• f6348127dc Only change mine data if using new allow_tgt feature
• ISSUE #56121: (githubcdr) salt-minion broken after upgrade to 3000 (refs: #56143)
• ISSUE #51854: (Oloremo) Fluorine: minion_pillar_cache: True leads to exception (refs: #56143, #52195)
• PR #56143: (waynew) Use encoding when caching pillar data @ 2020-03-10 01:33:37 UTC
• PR #52195: (waynew) Use encoding when caching pillar data (refs: #56143)
• 8a8e9c9c5f Merge pull request #56143 from waynew/51854-minion-pillar-cache-exception
• 58cc9488aa Merge branch 'master' into 51854-minion-pillar-cache-exception
• PR #56082: (Ch3LL) Fix saltversioninfo grain for new version @ 2020-03-10 01:32:11 UTC
• 9f27caa7d0 Merge pull request #56082 from Ch3LL/ver_grains
• e6abd6d31b ensure full_info/noc_info work with new versioning
• bcc520ccc4 Add saltversioninfo grains test
• 510e149b87 Fix saltversioninfo grain for new version
• PR #56285: (UtahDave) Add missing colon.  @ 2020-03-09 22:22:17 UTC
• 602ff3b9f1 Merge pull request #56285 from UtahDave/fix_f5_doc
• 1034013831 Add missing colon.
• PR #56333: (Ch3LL) add pylint ignore in django returner @ 2020-03-09 20:42:42 UTC
• de5184a206 Merge pull request #56333 from Ch3LL/lint_fix
• 6a213a429a add pylint ignore in django returner
• 759290a055 Use encoding when caching pillar data
• ISSUE #56080: (sagetherage) Update release notes, pip download page and install docs on pycrpto (refs: #56095)
• PR #56095: (waynew) Provide security advisory for PyCrypto @ 2020-02-10 18:42:00 UTC
• 9adc2214c3 Merge pull request #56095 from waynew/crypto-warning
• 484bc51f4b Add warnings to a couple of other places
• 2711c04ca9 Provide security advisory for PyCrypto
• PR #56092: (twangboy) Add LGPO and Network PRs to changelogs @ 2020-02-10 18:17:28 UTC
• 1acd492bb9 Merge pull request #56092 from twangboy/waynew-update-changelog
• 4e03620d4e Fix a docs issue
• e7b64277e1 Add LGPO and Network PRs to changelogs
• PR #56115: (s0undt3ch) Add information about the pip install salt on windows issue.  @ 2020-02-10 17:33:44 UTC
• 65d59b0ee9 Merge pull request #56115 from s0undt3ch/hotfix/release-notes
• aeac9f36cd Add information about the pip install salt on windows issue.
• a5179434e7 Merge branch 'master' into pdbedit_55185
• 95d46d6cc8 #55185 pdbedit module should check for version 4.8.x or newer
Salt 3000.2 Release Notes Version 3000.2 is a CVE-fix release for 3000.
Security Fix CVE-2020-11651
An issue was discovered in SaltStack Salt before 2019.2.4 and 3000 before 3000.2.  The salt-master process ClearFuncs class does not properly validate method calls. This allows a remote user to access some methods without authentication. These methods can be used to retrieve user tokens from the salt master and/or run arbitrary commands on salt minions.
CVE-2020-11652
An issue was discovered in SaltStack Salt before 2019.2.4 and 3000 before 3000.2.  The salt-master process ClearFuncs class allows access to some methods that improperly sanitize paths. These methods allow arbitrary directory access to authenticated users.
Known Issue Part of the fix for CVE-2020-11651 added better validation of the methods allowed to be called by remote clients.  Both AESFuncs and ClearFuncs now have an explicit list of methods that can be called.  The name of one of these whitlisted methods on AESFuncs had a typo.  The _minion_runner method should be minion_runner (without the underscore prefix).  This typo breaks the publish module’s runner method.  Calling runners, for example:
salt minion publish.runner manage.down
Will not work, and you will receive and empty reply from the salt master.
This will be addressed in the 3001 release of Salt set for mid-June 2020.
Salt 3000.3 Release Notes Version 3000.3 is a bug-fix release for 3000.
Statistics • Total Merges: 2
• Total Issue References: 2
• Total PR References: 2
• Contributors: 2 (dwoz, frogunder)
Changelog for v3000.2..v3000.3 Generated at: 2020-05-06 02:53:12 UTC
• PR #57097: (frogunder) Update man_pages 3000.3 @ 2020-05-05 22:13:09 UTC
• ISSUE #57027: (ecarson) [BUG] Master running 2019.2.4 or 3000.2 unable to synchronize files using saltutil.sync_all to 2017.7.1 minion due to CVE fix (refs: #57100)
• ISSUE #57016: (idontwanttosignin) [BUG] Requested method not exposed: minion_runner (refs: #57100)
• PR #57100: (dwoz) Address Issues in CVE Release @ 2020-05-05 22:09:25 UTC
Salt 3000.4 Release Notes Version 3000.4 is a CVE fix release for 3000.
Salt 3000.5 Release Notes Version 3000.5 is a CVE fix release for 3000.
Salt 3000.6 Release Notes Version 3000.6 is a bugfix release for 3000.
Salt 3000.7 Release Notes Version 3000.7 is a CVE fix release for 3000.
Salt 3000.8 Release Notes Version 3000.8 is a bug fix release for 3000.
Salt 3000.9 Release Notes Version 3000.9 is a bug fix release for 3000.
Salt 2019.2.0 Release Notes - Codename Fluorine Python 2.7 Deprecation In light of Python 2.7 reaching its End of Life (EOL) on Jan 1st 2020, Python 2 will be deprecated from SaltStack no earlier than the 3001 release, that is either the 3001 release or a later release.  This decision is pending further community discussion.
Known Issues The following are known issues for the 2019.2.0 release and will be fixed for 2019.2.1:
• #51699
Non-Backward-Compatible Change to YAML Renderer In earlier releases, this was considered valid usage in Python 2, assuming that data was a list or dictionary containing keys/values which are unicode types:
/etc/foo.conf: file.managed: - source: salt://foo.conf.jinja - template: jinja - context: data: {{ data }}
One common use case for this is when using one of Salt's custom Jinja filters which return lists or dictionaries, such as the ipv4 filter.
In Python 2, Jinja will render the unicode string types within the list/dictionary with the "u" prefix (e.g. {u'foo': u'bar'}). While not valid YAML, earlier releases would successfully load these values.
As of this release, the above SLS would result in an error message. To allow for a data structure to be dumped directly into your SLS file, use the tojson Jinja filter:
/etc/foo.conf: file.managed: - source: salt://foo.conf.jinja - template: jinja - context: data: {{ data|tojson }}
Another example where the new filter needs to be used is the following state example:
grafana_packages: pkg.installed: - names: {{ server.pkgs }}
This will fail when pkgs is a list or dictionary. You will need to update the state:
grafana_packages: pkg.installed: - names: {{ server.pkgs|tojson }}
This test case has also been tested with the yaml and json filters successfully.
NOTE: This filter was added in Jinja 2.9. However, fear not! The 2018.3.3 release added a tojson filter which will be used if this filter is not already present, making it available on platforms like RHEL 7 and Ubuntu 14.04 which provide older versions of Jinja.
IMPORTANT: The json_encode_dict and json_encode_list filters do not actually dump the results to JSON. Since tojson accomplishes what those filters were designed to do, they are now deprecated and will be removed in the 3000 release. The tojson filter should be used in all cases where json_encode_dict and json_encode_list would have been used.
Ansible Playbook State and Execution Modules Along with the including the ansible modules in the Oxygen release, running playbooks has been added in 2019.2.0 with the playbooks function. This also includes an ansible playbooks state module which can be used on a targeted host to run ansible playbooks, or used in an orchestration state runner.
install nginx: ansible.playbooks: - name: install.yml - git_repo: git://github.com/gtmanfred/playbook.git - git_kwargs: rev: master
The playbooks modules also includes the ability to specify a git repo to clone and use, or a specific directory can to used when running the playbook.
Network Automation Beginning with this release, Salt provides much broader support for a variety of network operating systems, and features for configuration manipulation or operational command execution.
NetBox Added in the previous release, 2018.3.0, the capabilities of the netbox Execution Module have been extended, with a much longer list of available features:
• netbox.create_circuit
• netbox.create_circuit_provider
• netbox.create_circuit_termination
• netbox.create_circuit_type
• netbox.create_device
• netbox.create_device_role
• netbox.create_device_type
• netbox.create_interface
• netbox.create_interface_connection
• netbox.create_inventory_item
• netbox.create_ipaddress
• netbox.create_manufacturer
• netbox.create_platform
• netbox.create_site
• netbox.delete_interface
• netbox.delete_inventory_item
• netbox.delete_ipaddress
• netbox.get_circuit_provider
• netbox.get_interfaces
• netbox.get_ipaddresses
• netbox.make_interface_child
• netbox.make_interface_lag
• netbox.openconfig_interfaces
• netbox.openconfig_lacp
• netbox.update_device
• netbox.update_interface
Besides this Execution Module, Salt users can load data directly from NetBox into the device Pillar, via the netbox External Pillar module.
Netmiko Netmiko, the multi-vendor library to simplify Paramiko SSH connections to network devices, is now officially integrated into Salt. The network community can use it via the netmiko Proxy Module or directly from any Salt Minions, passing the connection credentials - see the documentation for the netmiko Execution Module.
Arista Arista switches can now be managed running under the pyeapi Proxy Module, and execute RPC requests via the pyeapi Execution Module.
Cisco Nexus While support for SSH-based operations has been added in the release codename Carbon (2016.11), the new nxos_api Proxy Module and nxos_api allow management of Cisco Nexus switches via the NX-API.
It is important to note that these modules don't have third party dependencies, therefore they can be used straight away from any Salt Minion. This also means that the user may be able to install the regular Salt Minion on the Nexus switch directly and manage the network devices like a regular server.
General-purpose Modules The new ciscoconfparse Execution Module can  be used for basic configuration parsing, audit or validation for a variety of  network platforms having Cisco IOS style configuration (one space indentation), as well as brace-delimited configuration style.
The iosconfig can be used for various configuration manipulation for Cisco IOS style configuration, such as: configuration cleanup, tree representation of the config, etc.
NAPALM Commit At and Commit Confirmed Beginning with this release, NAPALM users are able to execute scheduled commits (broadly known as "commit at") and "commit confirmed" (revert the configuration change unless the user confirms by running another command). These features are available via the commit_in, commit_at, revert_in, or revert_at arguments for the net.load_config and net.load_template execution functions, or netconfig.managed.
The counterpart execution functions net.confirm_commit, or net.cancel_commit, as well as the State functions netconfig.commit_cancelled, or netconfig.commit_confirmed can be used to confirm or cancel a commit.
Please note that the commit confirmed and commit cancelled functionalities are available for any platform whether the network devices supports the features natively or not. However, be cautious and make sure you read and understand the caveats before using them in production.
Multiple Templates Rendered Simultaneously The template_name argument of the net.load_template Execution and netconfig.managed State function now supports a list of templates. This is particularly useful when a very large Jinja template is split into multiple smaller and easier to read templates that can eventually be reused in other States. For example, the following syntax is not correct to manage the configuration of NTP and BGP simultaneously, using two different templates and changing the device configuration through one single commit:
manage_bgp_and_ntp: netconfig.managed: - template_name: - salt://templates/bgp.jinja - salt://templates/ntp.jinja - context: bpg: {{ pillar.bgp }} ntp: {{ pillar.ntp }}
Connection Re-establishment on Demand Beginning with this release, any NAPALM command executed when running under a NAPALM Proxy Minion supports the force_reconnect magic argument.
If one would need to execute a command on the device but is connecting using different parameters (due to various causes, e.g., unable to authenticate the user specified in the Pillar as the authentication system - say TACACS+ is not available, or the DNS resolver is currently down and would like to temporarily use the IP address instead, etc.), it implies updating the Pillar data and restarting the Proxy Minion process restart.  In particular cases like that, you can pass the force_reconnect=True keyword argument, together with the alternative connection details, to enforce the command to be executed over a separate connection.
For example, if the usual command is salt '*' net.arp, you can use the following to connect using a different username instead:
salt '*' net.arp username=my-alt-usr force_reconnect=True
The same goes with any of the other configuration arguments required for the NAPALM connection - see NAPALM proxy documentation.
Configuration Replace Features To replace various configuration chunks, you can use the new net.replace_pattern execution function, or the netconfig.replace_pattern State function. For example, if you want to update your configuration and rename a BGP policy referenced in many places, you can do so by running:
salt '*' net.replace_pattern OLD-POLICY-CONFIG new-policy-config
Similarly, you can also replace entire configuration blocks using the net.blockreplace function.
Configuration Save Features The net.save_config function can be used to save the configuration of the managed device into a file. For the State subsystem, the netconfig.saved function has been added which provides a complete list of facilities when managing the target file where the configuration of the network device can be saved.
For example, backup the running configuration of each device under its own directory tree:
/var/backups/{{ opts.id }}/running.cfg: netconfig.saved: - source: running - makedirs: true
All the new network automation modules mentioned above are directly exposed to the NAPALM users, without requiring any architectural changes, just eventually install some requirements:
Junos The features from the existing junos Execution Module are available via the following functions:
• napalm.junos_cli: Execute a CLI command and return the output as text or Python dictionary.
• napalm.junos_rpc: Execute an RPC request on the remote Junos device, and return the result as a Python dictionary, easy to digest and manipulate.
• napalm.junos_install_os: Install the given image on the device.
• napalm.junos_facts: The complete list of Junos facts collected by the junos-eznc underlying library.
NOTE: To be able to use these features, you muse ensure that you meet the requirements for the junos module. As junos-eznc is already a dependency of NAPALM, you will only have to install jxmlease.
salt '*' napalm.junos_cli 'show arp' format=xml salt '*' napalm.junos_rpc get-interface-information
Netmiko The features from the newly added netmiko Execution Module are available as:
• napalm.netmiko_commands: Execute one or more commands to be execute on the remote device, via Netmiko, and return the output as a text.
• napalm.netmiko_config: Load a list of configuration command on the remote device, via Netmiko. The commands can equally be loaded from a local or remote path, and passed through Salt's template rendering pipeline (by default using Jinja as the template rendering engine).
salt '*' napalm.netmiko_commands 'show version' 'show interfaces' salt '*' napalm.netmiko_config config_file=https://bit.ly/2sgljCB
Arista pyeapi For various operations and various extension modules, the following features have been added to gate functionality from the pyeapi module:
• napalm.pyeapi_run_commands: Execute a list of commands on the Arista switch, via the pyeapi library.
• napalm.pyeapi_config: Configure the Arista switch with the specified commands, via the pyeapi Python library. Similarly to napalm.netmiko_config, you can use both local and remote files, with or without templating.
salt '*' napalm.pyeapi_run_commands 'show version' 'show interfaces' salt '*' napalm.pyeapi_config config_file=salt://path/to/template.jinja
Cisco NX-API In the exact same way as above, the user has absolute control by using the following primitives to manage Cisco Nexus switches via the NX-API:
• napalm.nxos_api_show: Execute one or more show (non-configuration) commands, and return the output as plain text or Python dictionary.
• napalm.nxos_api_rpc: Execute arbitrary RPC requests via the Nexus API.
• napalm.nxos_api_config: Configures the Nexus switch with the specified commands, via the NX-API. The commands can be loaded from the command line, or a local or remote file, eventually rendered using the templating engine of choice (default: jinja).
salt '*' napalm.nxos_api_show 'show bgp sessions' 'show processes' raw_text=False
Ciscoconfparse The following list of function may be handy when manipulating Cisco IOS or Junos style configurations:
• napalm.config_filter_lines: Return a list of detailed matches, for the configuration blocks (parent-child relationship) whose parent and children respect the regular expressions provided.
• napalm.config_find_lines: Return the configuration lines that match the regular expression provided.
• napalm.config_lines_w_child: Return the configuration lines that match a regular expression, having child lines matching the child regular expression.
• napalm.config_lines_wo_child: Return the configuration lines that match a regular expression, that don't have child lines matching the child regular expression.
NOTE: These functions require the ciscoconfparse Python library to be installed.
Usage example (find interfaces that are administratively shut down):
salt '*' napalm.config_lines_w_child 'interface' 'shutdown'
IOSConfig For Cisco IOS style configuration, the following features have been added to the napalm Execution Module:
• napalm.config_tree: Transform Cisco IOS style configuration to structured Python dictionary, using the configuration of the interrogated network device.
• napalm.config_merge_tree: Return the merge tree of the configuration of the managed network device with a different configuration to be merged with (without actually loading any changes on the device).
• napalm.config_merge_text: Return the merge result (as text) of the configuration of the managed network device with a different configuration to be merged with.
• napalm.config_merge_diff: Return the merge diff after merging the configuration of the managed network device with a different configuration (without actually loading any changes on the device).
SCP Reusing the already available connection credentials provided for NAPALM, the following features are now available:
• napalm.scp_put: Transfer files and directories to remote network device.
• napalm.scp_get: Transfer files and directories from remote network device to the localhost of the Minion.
PeeringDB The peeringdb Execution Module is useful to gather information about other networks you can potentially peer with, and automatically establish BGP sessions, e.g., given just a specific AS number, the rest of the data (i.e., IP addresses, locations where the remote network is available, etc.) is retrieved from PeeringDB, and the session configuration is automated with minimal to no effort (typing the IP addresses manually can be both tedious and error prone).
New Docker Proxy Minion Docker containers can now be treated as actual minions without installing salt in the container, using the new docker proxy minion.
This proxy minion uses the docker executor to pass commands to the docker container using docker.call.  Any state module calls are passed through the corresponding function from the docker module.
proxy: proxytype: docker name: keen_proskuriakova
Terraform Salt-SSH Roster You can now dynamically generate a Salt-SSH roster from the terraform resources defined with terraform-provider-salt.
This allows you to combine both terraform and Salt-SSH to provision and configure your hosts. See the terraform roster for an example on how to setup and use.
Grains Dictionary Passed into Custom Grains Starting in this release, if a custom grains function accepts a variable named grains, the Grains dictionary of the already compiled grains will be passed in.  Because of the non-deterministic order that grains are rendered in, the only grains that can be relied upon to be passed in are core.py grains, since those are compiled first.
More Precise virtual Grain This release improves the accuracy of the virtual grain when running Salt in a nested virtualization environment (e.g. systemd-nspawn container inside a VM) and having virt-what installed.
Until now, the virtual grain was determined by matching against all output lines of virt-what instead of individual items which could lead to not quite precise results (e.g. reporting HyperV inside a systemd-nspawn container running within a Hyper-V-based VM.
Configurable Module Environment Salt modules (states, execution modules, returners, etc.) now can have custom environment variables applied when running shell commands. This can be configured by setting a system-environment key either in Grains or Pillar.  The syntax is as follows:
system-environment: <type> <module>: # Namespace for all functions in the module _: <key>: <value>
# Namespace only for particular function in the module <function>: <key>: <value>
• <type> would be the type of module (i.e. states, modules, etc.).
• <module> would be the module's name.
NOTE: The module name can be either the virtual name (e.g. pkg), or the physical name (e.g. yumpkg).
• <function> would be the function name within that module. To apply environment variables to all functions in a given module, use an underscore (i.e. _) as the function name. For example, to set the same environment variable for all package management functions, the following could be used:
system-environment: modules: pkg: _: SOMETHING: for_all
To set an environment variable in pkg.install only:
system-environment: modules: pkg: install: LC_ALL: en_GB.UTF-8
To set the same variable but only for SUSE minions (which use zypper for package management):
system-environment: modules: zypper: install: LC_ALL: en_GB.UTF-8
NOTE: This is not supported throughout Salt; the module must explicitly support this feature (though this may change in the future). As of this release, the only modules which support this are the following pkg virtual modules:
• aptpkg
• yumpkg
• zypper
Virtual Package Support Dropped for APT In APT, some packages have an associated list of packages which they provide.  This allows one to do things like run apt-get install foo when the real package name is foo1.0, and get the right package installed.
Salt has traditionally designated as "virtual packages" those which are provided by an installed package, but for which there is no real package by that name installed. Given the above example, if one were to run a pkg.installed state for a package named foo, then pkg.list_pkgs would show a package version of simply 1 for package foo, denoting that it is a virtual package.
However, while this makes certain aspects of package management convenient, there are issues with this approach that make relying on "virtual packages" problematic. For instance, Ubuntu has four different mutually-conflicting packages for nginx:
• nginx-core
• nginx-full
• nginx-light
• nginx-extras
All four of these provide nginx. Yet there is an nginx package as well, which has no actual content and merely has dependencies on any one of the above four packages. If one used nginx in a pkg.installed state, and none of the above four packages were installed, then the nginx metapackage would be installed, which would pull in nginx-core_.  Later, if nginx were used in a pkg.removed state, the nginx metapackage would be removed, leaving nginx-core installed. The result would be that, since nginx-core_ provides nginx_, Salt would now see nginx as an installed virtual package, and the pkg.removed state would fail.  Moreover, nginx would not actually have been removed, since nginx-core would remain installed.
Starting with this release, Salt will no longer support using "virtual package" names in pkg states, and package names will need to be specified using the proper package name. The pkg.list_repo_pkgs function can be used to find matching package names in the repositories, given a package name (or glob):
# salt myminion pkg.list_repo_pkgs 'nginx*' myminion: ---------- nginx: - 1.10.3-0ubuntu0.16.04.2 - 1.9.15-0ubuntu1 nginx-common: - 1.10.3-0ubuntu0.16.04.2 - 1.9.15-0ubuntu1 nginx-core: - 1.10.3-0ubuntu0.16.04.2 - 1.9.15-0ubuntu1 nginx-core-dbg: - 1.10.3-0ubuntu0.16.04.2 - 1.9.15-0ubuntu1 nginx-doc: - 1.10.3-0ubuntu0.16.04.2 - 1.9.15-0ubuntu1 nginx-extras: - 1.10.3-0ubuntu0.16.04.2 - 1.9.15-0ubuntu1 nginx-extras-dbg: - 1.10.3-0ubuntu0.16.04.2 - 1.9.15-0ubuntu1 nginx-full: - 1.10.3-0ubuntu0.16.04.2 - 1.9.15-0ubuntu1 nginx-full-dbg: - 1.10.3-0ubuntu0.16.04.2 - 1.9.15-0ubuntu1 nginx-light: - 1.10.3-0ubuntu0.16.04.2 - 1.9.15-0ubuntu1 nginx-light-dbg: - 1.10.3-0ubuntu0.16.04.2 - 1.9.15-0ubuntu1
Alternatively, the newly-added pkg.show function can be used to get more detailed information about a given package and help determine what package name is correct:
# salt myminion pkg.show 'nginx*' filter=description,provides myminion: ---------- nginx: ---------- 1.10.3-0ubuntu0.16.04.2: ---------- Description: small, powerful, scalable web/proxy server 1.9.15-0ubuntu1: ---------- Description: small, powerful, scalable web/proxy server nginx-common: ---------- 1.10.3-0ubuntu0.16.04.2: ---------- Description: small, powerful, scalable web/proxy server - common files 1.9.15-0ubuntu1: ---------- Description: small, powerful, scalable web/proxy server - common files nginx-core: ---------- 1.10.3-0ubuntu0.16.04.2: ---------- Description: nginx web/proxy server (core version) Provides: httpd, httpd-cgi, nginx 1.9.15-0ubuntu1: ---------- Description: nginx web/proxy server (core version) Provides: httpd, httpd-cgi, nginx nginx-core-dbg: ---------- 1.10.3-0ubuntu0.16.04.2: ---------- Description: nginx web/proxy server (core version) - debugging symbols 1.9.15-0ubuntu1: ---------- Description: nginx web/proxy server (core version) - debugging symbols nginx-doc: ---------- 1.10.3-0ubuntu0.16.04.2: ---------- Description: small, powerful, scalable web/proxy server - documentation 1.9.15-0ubuntu1: ---------- Description: small, powerful, scalable web/proxy server - documentation nginx-extras: ---------- 1.10.3-0ubuntu0.16.04.2: ---------- Description: nginx web/proxy server (extended version) Provides: httpd, httpd-cgi, nginx 1.9.15-0ubuntu1: ---------- Description: nginx web/proxy server (extended version) Provides: httpd, httpd-cgi, nginx nginx-extras-dbg: ---------- 1.10.3-0ubuntu0.16.04.2: ---------- Description: nginx web/proxy server (extended version) - debugging symbols 1.9.15-0ubuntu1: ---------- Description: nginx web/proxy server (extended version) - debugging symbols nginx-full: ---------- 1.10.3-0ubuntu0.16.04.2: ---------- Description: nginx web/proxy server (standard version) Provides: httpd, httpd-cgi, nginx 1.9.15-0ubuntu1: ---------- Description: nginx web/proxy server (standard version) Provides: httpd, httpd-cgi, nginx nginx-full-dbg: ---------- 1.10.3-0ubuntu0.16.04.2: ---------- Description: nginx web/proxy server (standard version) - debugging symbols 1.9.15-0ubuntu1: ---------- Description: nginx web/proxy server (standard version) - debugging symbols nginx-light: ---------- 1.10.3-0ubuntu0.16.04.2: ---------- Description: nginx web/proxy server (basic version) Provides: httpd, httpd-cgi, nginx 1.9.15-0ubuntu1: ---------- Description: nginx web/proxy server (basic version) Provides: httpd, httpd-cgi, nginx nginx-light-dbg: ---------- 1.10.3-0ubuntu0.16.04.2: ---------- Description: nginx web/proxy server (basic version) - debugging symbols 1.9.15-0ubuntu1: ---------- Description: nginx web/proxy server (basic version) - debugging symbols
Minion Startup Events When a minion starts up it sends a notification on the event bus with a tag that looks like this: salt/minion/<minion_id>/start. For historical reasons the minion also sends a similar event with an event tag like this: minion_start. This duplication can cause a lot of clutter on the event bus when there are many minions. Set enable_legacy_startup_events: False in the minion config to ensure only the salt/minion/<minion_id>/start events are sent.
The new enable_legacy_startup_events minion config option defaults to True, but will be set to default to False beginning with the 3001 release of Salt.
The Salt Syndic currently sends an old style syndic_start event as well. The syndic respects enable_legacy_startup_events as well.
Failhard changes It is now possible to override a global failhard setting with a state-level failhard setting. This is most useful in case where global failhard is set to True and you want the execution not to stop for a specific state that could fail, by setting the state level failhard to False.  This also allows for the use of onfail*-requisites, which would previously be ignored when a global failhard was set to True.  This is a deviation from previous behavior, where the global failhard setting always resulted in an immediate stop whenever any state failed (regardless of whether the failing state had a failhard setting of its own, or whether any onfail*-requisites were used).
Pass Through Options to file.serialize State This allows for more granular control over the way in which the dataset is serialized. See the documentation for the new serializer_opts and deserializer_opts options in the file.serialize state for more information.
file.patch State Rewritten The file.patch state has been rewritten with several new features:
• Patch sources can now be remote files instead of only salt:// URLs
• Multi-file patches are now supported
• Patch files can be templated
In addition, it is no longer necessary to specify what the hash of the patched file should be.
New no_proxy Minion Configuration Pass a list of hosts using the no_proxy minion config option to bypass an HTTP proxy.
NOTE: This key does nothing unless proxy_host is configured and it does not support any kind of wildcards.
Changes to slack Engine The output returned to Slack from functions run using this engine is now formatted using that function's proper outputter. Earlier releases would format the output in YAML for all functions except for when states were run.
Enhancements to wtmp Beacon A new key, action, has been added to the events fired by this beacon, which will contain either the string login or logout. This will simplify reactors which use this beacon's data, as it will no longer be necessary to check the integer value of the type key to know whether the event is a login or logout.
Additionally, in the event that your platform has a non-standard utmp.h, you can now configure which type numbers indicate a login and logout.
See the wtmp beacon documentation for more information.
Deprecated and Removed Options API Removed Arguments Support for LocalClient's expr_form argument has been removed. Please use tgt_type instead. This change was made due to numerous reports of confusion among community members, since the targeting method is published to minions as tgt_type, and appears as tgt_type in the job cache as well.
Those who are using the LocalClient (either directly, or implicitly via a netapi module) need to update their code to use tgt_type.
>>> import salt.client >>> local = salt.client.LocalClient() >>> local.cmd("*", "cmd.run", ["whoami"], tgt_type="glob") {'jerry': 'root'}
Minion Configuration Deprecated Option The master_shuffle configuration option is deprecated as of the 2019.2.0 release. Please use the random_master option instead.
Module Removed Options • The napalm_network module has been changed as follows:
• Support for the template_path has been removed from net.load_template function. This is because support for NAPALM native templates has been dropped.
• The pip module has been changed as follows:
• Support for the no_chown option has been removed from pip.install function.
• The trafficserver module has been changed as follows:
• The trafficserver.match_var function was removed. Please use trafficserver.match_metric instead.
• The trafficserver.read_var function was removed. Please use trafficserver.read_config instead.
• The trafficserver.set_var function was removed. Please use trafficserver.set_config instead.
• The win_update module has been removed. It has been replaced by win_wua.
• The win_wua module has been changed as follows:
• The win_wua.download_update and win_wua.download_updates functions have been removed. Please use win_wua.download instead.
• The win_wua.install_update and win_wua.install_updates functions have been removed. Please use win_wua.install instead.
• The win_wua.list_update function has been removed. Please use functions have been removed. Please use win_wua.get instead.