SaltStack官方於2020.2月初發布了最新的功能版本——Salt 3000,代號 Neon。相對而言,本次發佈的版本,在主要功能上的變化並不算大,具體有哪些增、刪、改的變更,請大家詳見下文的展開說明。
您也可以參考在Github上維護的一份相同的技術資料:Salt 3000 Release Notes - Codename Neon
Security Advisory - 安全建議
由於歷史原因,Salt要求PyCrypto作爲“lowest common denominator”(需要符合的最低要求)。 但是,PyCrypto並沒有得到持續維護,最佳實踐是手動升級以使用維護程度更高的庫,例如PyCryptodome。 有關更多信息,請參見問題#52674和問題#54115
New Versioning - 新的版本號形式
Neon發行版已刪除了日期形式的版本控制。 展望未來,我們將使用從3000
開始的基於非日期的版本架構。版本將爲MAJOR.PATCH
。 對於包含功能和/或錯誤修復的計劃發行版,MAJOR版本將增加。 請查看批准的 SEP 以獲取更多詳細信息。
新版本控制方案符合PEP 440,但distutils.StrictVersion將導致錯誤的無效版本號。 如果使用StrictVersion比較Salt的版本,請使用LooseVersion。 您還可以使用打包庫來比較版本。 另一種選擇是使用 salt version module。
Python 3.8 Not Supported
請注意,當前不支持使用Python 3.8運行Salt。 建議不要使用高於3.7的版本。
Vendored Tornado Code Base
Tornado代碼庫已包含在salt.ext.tornado
中。 這樣做是爲了在所有操作系統上提供一致的Tornado版本,同時我們繼續致力於將Tornado升級到最新版本。 使用Tornado的新代碼應從salt.ext.tornado
導入模塊,而不是導入Tornado的系統版本。
Msgpack 1.0.0rc1 Incompatibility
Salt目前與msgpack 1.0.0rc1不兼容。 我們建議使用版本<1.0.0。 這會影響Salt Master對minions運行命令的能力。 有關更多詳細信息和更新,請參見問題56007。
Pip Installing Salt On Windows
使用pip安裝salt時,此版本無法在Windows上正確安裝。 PR 56099中解決了此問題。此問題的解決方法是:
pip install "pywin32==224" "WMI==1.4.9"
那些使用Salt Windows Installer的用戶不受此問題的影響。
Saltcheck Updates
該模塊自 2018.3 發行版中開始提供, 在本次發佈版本中 saltcheck 模塊在以下方面得到了加強:
- 支持Saltenv環境
- 通過命名約定將tests測試與states狀態相關聯
- 添加report_highstate_tests函數
- 添加空和非空斷言
- 添加skip關鍵字
- 添加print_result關鍵字
- 添加assertion_section關鍵字
- 使用saltcheck.state_apply運行state.apply進行測試設置或拆卸
- 更改輸出以顯示測試時間
- 適用於salt-ssh
Saltcheck提供了類似於單元測試的功能,僅需要有關Salt模塊執行和Yaml的知識。 Saltcheck使用Salt模塊返回數據,然後針對該返回運行斷言。 這允許使用salt模塊中包含的所有功能進行測試。
爲了運行狀態和highstate狀態saltcheck測試,必須在狀態目錄中創建一個子文件夾並將其命名爲saltcheck-tests
。 狀態測試應在*.tst
結尾的文件中創建,並將其放置在saltcheck-tests
文件夾中。 tst
文件通過salt渲染系統運行,從而使測試可以用yaml(或選擇的渲染器)編寫,幷包括jinja以及常規的grain和pillar信息。 像狀態一樣,可以在一個tst
文件中指定多個測試。 可以在saltcheck-tests
文件夾中創建多個tst
文件,並且應將其命名爲與關聯狀態相同的名稱。 測試的id
與salt狀態文件中的id
相同,並且應唯一且具有描述性。
Usage
文件在系統中分佈的示例::
/srv/salt/apache/
init.sls
config.sls
saltcheck-tests/
init.tst
config.tst
deployment_validation.tst
可以按state狀態的name名稱運行測試,如運行所有的apache/saltcheck/*.tst
測試文件或在top.sls中爲分配給該minion的所有狀態運行測試。 也可以在沒有關聯狀態的情況下創建測試。 這些測試將通過使用saltcheck.run_state_tests
來運行,並不會由saltcheck.run_highstate_tests
自動運行。
salt '*' saltcheck.run_state_tests apache,apache.config
salt '*' saltcheck.run_state_tests apache check_all=True
salt '*' saltcheck.run_highstate_tests
salt '*' saltcheck.run_state_tests apache.deployment_validation
Example Tests
{# will run the common salt state before further testing #}
setup_test_environment:
module_and_function: saltcheck.state_apply
args:
- common
pillar-data:
data: value
{% for package in ["apache2", "openssh"] %}
{# or another example #}
{# for package in salt['pillar.get']("packages") #}
jinja_test_{{ package }}_latest:
module_and_function: pkg.upgrade_available
args:
- {{ package }}
assertion: assertFalse
{% endfor %}
validate_user_present_and_shell:
module_and_function: user.info
args:
- root
assertion: assertEqual
expected-return: /bin/bash
assertion_section: shell
print_result: False
skip_test:
module_and_function: pkg.upgrade_available
args:
- apache2
assertion: assertFalse
skip: True
Output Format Changes
Saltcheck輸出已得到增強,可以顯示每次測試所花費的時間。 這將導致輸出格式的更改。
先前的輸出:
local:
|_
----------
ntp:
----------
ntp-client-installed:
Pass
ntp-service-status:
Pass
|_
----------
TEST RESULTS:
----------
Failed:
0
Missing Tests:
0
Passed:
2
New output:
local:
|_
----------
ntp:
----------
ntp-client-installed:
----------
duration:
1.0408
status:
Pass
ntp-service-status:
----------
duration:
1.464
status:
Pass
|_
----------
TEST RESULTS:
----------
Execution Time:
2.5048
Failed:
0
Missing Tests:
0
Passed:
2
Skipped:
0
Unless and onlyif Enhancements
現在,可以使用salt模塊運行unless
和onlyif
條件。 字典必須包含一個參數fun
,它是正在運行的模塊,其他所有參數都必須在args鍵下傳遞,或作爲單獨的kwargs傳遞給模塊函數。
注意
某些states的
unless/onlyif
實現早於此功能,可能無法按預期工作:
states.git
states.cmd
states.macpackage
states.file
states.docker_container
例如:
check external ip address:
http.query:
- name: https://icanhazip.com
- status: 200
- onlyif:
- fun: file.file_exists
path: /usr/local/bin/whatever
等效於:
check another ip address:
http.query:
- name: https://icanhazip.com
- status: 200
- onlyif:
- test -f /tmp/fnord.txt
另一個例子:
set mysql root password:
debconf.set:
- name: mysql-server-5.7
- data:
'mysql-server/root_password': {'type': 'password', 'value': {{pillar['mysql.pass']}} }
- unless:
- fun: pkg.version
args:
- mysql-server-5.7
Keystore State and Module
現在提供了一個用於管理Java Keystore文件的新的state和execution 模塊。 它允許添加/刪除/列出以及管理keystore密鑰庫文件。
# salt-call keystore.list /path/to/keystore.jks changeit
local:
|_
----------
alias:
hostname1
expired:
True
sha1:
CB:5E:DE:50:57:99:51:87:8E:2E:67:13:C5:3B:E9:38:EB:23:7E:40
type:
TrustedCertEntry
valid_start:
August 22 2012
valid_until:
August 21 2017
define_keystore:
keystore.managed:
- name: /tmp/statestore.jks
- passphrase: changeit
- force_remove: True
- entries:
- alias: hostname1
certificate: /tmp/testcert.crt
- alias: remotehost
certificate: /tmp/512.cert
private_key: /tmp/512.key
- alias: stringhost
certificate: |
-----BEGIN CERTIFICATE-----
MIICEjCCAX
Hn+GmxZA
-----END CERTIFICATE-----
XML Module
現在提供一個用於編輯XML文件的新狀態和執行模塊。 當前,它允許編輯來自xpath查詢的值或編輯XML ID。
# salt-call xml.set_attribute /tmp/test.xml ".//actor[@id='3']" editedby "Jane Doe"
local:
True
# salt-call xml.get_attribute /tmp/test.xml ".//actor[@id='3']"
local:
----------
editedby:
Jane Doe
id:
3
# salt-call xml.get_value /tmp/test.xml ".//actor[@id='2']"
local:
Liam Neeson
# salt-call xml.set_value /tmp/test.xml ".//actor[@id='2']" "Patrick Stewart"
local:
True
# salt-call xml.get_value /tmp/test.xml ".//actor[@id='2']"
local:
Patrick Stewart
ensure_value_true:
xml.value_present:
- name: /tmp/test.xml
- xpath: .//actor[@id='1']
- value: William Shatner
LGPO Execution Module
對win_lgpo進行了多項修復,以擴展對其他策略的支持並提高性能。 已經解決了在ADML文件中發現的編碼和不支持的字符(智能引號、破折號等)以及某些策略中的空格的問題。
速度增強包括:
- 在
__context__
中從ADMX/ADML文件緩存已編譯的xml - 在編譯XML之前請對所有鍵進行小寫,以移除代價昂貴的XPath查找
附加功能:
- 添加lgpo.get_policy函數,該函數可讓您獲取單個策略的當前設置。
- 更改一些過長的策略名稱
LGPO State Module
對win_lgpo狀態進行了多次更改以提高性能。
現在,它使用lgpo.get_policy
函數而不是lgpo.get
,以避免在每次狀態運行的開始和結束時重新加載計算機上的所有設置。
支持新的較短的策略名稱,但也嘗試解析較舊的較長的策略名稱。
Win_network Salt Util
現在使用.NET庫在支持Windows的Windows系統上獲取接口信息。 不支持的系統會退回到更昂貴的WMI調用。 這一點很重要,因爲此數據是針對grains收集的,並且在每次處理fork分叉時都會發生。
Jinja enhancements
Troubleshooting Jinja map files
爲map.jinja
添加了一個新的故障排除 execution module。
假設按如下方式將map加載到公式SLS中:
{% from "myformula/map.jinja" import myformula with context %}
以下命令可以用來加載 map 並檢查結果:
salt myminion jinja.load_map myformula/map.jinja myformula
這個模塊也可以拿來測試 json 和 yaml maps:
salt myminion jinja.import_yaml myformula/defaults.yaml
salt myminion jinja.import_json myformula/defaults.json
json_query filter
已添加Ansible json_query Jinja過濾器的端口。 它允許使用JMESPath語言針對JSON數據進行查詢。 可以用於過濾pillar數據、yaml映射,也可以用於http_query。
取決於jmespath Python模塊。
Slot Syntax Updates
插槽語法已更新,以支持解析字典響應並添加文本。
demo dict parsing and append:
test.configurable_test_state:
- name: slot example
- changes: False
- comment: __slot__:salt:test.arg(shell="/bin/bash").kwargs.shell ~ /appended
local:
----------
ID: demo dict parsing and append
Function: test.configurable_test_state
Name: slot example
Result: True
Comment: /bin/bash/appended
Started: 09:59:58.623575
Duration: 1.229 ms
Changes:
此外,現在在嵌套狀態數據結構(字典、列表、除非/僅當參數)中支持插槽解析:
demo slot parsing for nested elements:
file.managed:
- name: /tmp/slot.txt
- source: salt://slot.j2
- template: jinja
- context:
# Slot inside of the nested context dictionary
variable: __slot__:salt:test.echo(a_value)
- unless:
- fun: file.search
args:
# Slot as unless argument
- __slot__:salt:test.echo(/tmp/slot.txt)
- "DO NOT OVERRIDE"
ignore_if_missing: True
State Changes
- 修復了file.symlink狀態,以正確除去文件、目錄和符號鏈接以外的現有文件系統條目。
- 由於刪除了
pchanges
,因此onchanges
和prereq
等requisites條件現在在測試模式下可以正常運行。 - 添加了新的ssh_auth.manage狀態,以確保僅對指定用戶提供指定的ssh密鑰。
- 添加了新的saltutil狀態,而不是使用
module.run
來更輕鬆地處理更改。
Module Changes
- 添加了新的
boto_ssm
模塊以設置和查詢AWS SSM參數中的secrets。 - 修復了file.remove模塊,以正確除去文件系統、目錄和符號鏈接以外的文件系統條目。
Enhancements to Engines
可以通過在引擎配置中包括engine_module
參數來配置特定Salt引擎的多個副本。
engines:
- production_logstash:
host: production_log.my_network.com
port: 5959
proto: tcp
engine_module: logstash
- develop_logstash:
host: develop_log.my_network.com
port: 5959
proto: tcp
engine_module: logstash
已添加新的fluent
引擎,以將Salt事件導出到fluentd中。
engines:
- fluent
host: localhost
port: 24224
<source>
@type forward
port 24224
</source>
<match saltstack.**>
@type file
path /var/log/td-agent/saltstack
</match>
Enhancements to Beacons
可以通過在信標配置中包含beacon_module
參數來配置特定Salt信標的多個副本。
beacons:
watch_importand_file:
- files:
/etc/important_file: {}
- beacon_module: inotify
watch_another_file:
- files:
/etc/another_file: {}
- beacon_module: inotify
Enhancements to chroot
添加到chroot的新功能函數apply
,sls
和highstate
允許在sls文件中執行狀態或在chroot內部運行apply/highstate。
Deprecations
Raet Deprecated
Raet傳輸工具已被棄用。 請使用支持的傳輸協議tcp或zeromq。
Module Deprecations
- 由於服務已停用,Hipchat模塊已被刪除。 Google Chat,MS Teams或Slack可能是合適的替代品。
- dockermod模塊已作如下更改:
- 從
dockermod.resolve_tag
函數中刪除了對標籤tags
kwarg參數的支持。 - 已從
dockermod.connect_container_to_network
函數中刪除了對network_id
kwarg的支持。 請改用net_id
。 - 從
dockermod.sls_build
函數中刪除了對name
kwarg的支持。 請改用repository
和tag
。 - 從以下功能中刪除了對
image
kwarg的支持。 在所有情況下,請同時使用repository
和tag
選項:- dockermod.build
- dockermod.commit
- dockermod.import
- dockermod.load
- dockermod.tag
- 從
- 由於拼寫錯誤,heat模塊已從
heat.create_stack
和heat.update_stack
函數中刪除了enviroment
kwarg。 請改爲使用environment
。 - ssh執行模塊已作如下更改:
- 刪除了對
ssh.get_known_host
函數的支持。 請改用ssh.get_known_host_entries
函數。 - 刪除了對
ssh.recv_known_host
函數的支持。 請改用ssh.recv_known_host_entries
函數。
- 刪除了對
- The :py:mod
firewalld <salt.modules.firewalld>
module 有以下變更:firewalld.add_port <salt.module.firewalld.add_port()
函數中force_masquerade
選項的默認設置已從True
更改爲False
。- 在
firewalld.add_port_fwd <salt.module.firewalld.add_port_fwd()
函數中對force_masquerade
選項的支持已從True
更改爲False
。
- State Deprecations
- 由於服務已停用,因此hipchat狀態已被刪除。
MS Teams
或Slack
可能是合適的替代品。 - cmd狀態模塊已從cmd.run函數中刪除了
quiet
的kwarg。 請改爲將output_loglevel
設置爲quiet
。 - 由於拼寫錯誤,heat狀態模塊已從
heat.deployed
功能中刪除了enviroment
。 請改爲使用environment
。 - :py:mod
firewalld <salt.states.firewalld>
狀態已更改如下:firewalld.present
函數中prune_services
選項的默認設置已從True
更改爲False
。
- 由於服務已停用,因此hipchat狀態已被刪除。
- Fileserver Deprecations
- hgfs文件服務器刪除了以下配置選項:
hgfs_env_whitelist
配置選項已被刪除,以支持hgfs_saltenv_whitelist
。hgfs_env_blacklist
配置選項已刪除,以支持hgfs_saltenv_blacklist
。
- svnfs文件服務器刪除了以下配置選項:
svnfs_env_whitelist
配置選項已被刪除,以支持svnfs_saltenv_whitelist
。svnfs_env_blacklist
配置選項已刪除,以支持svnfs_saltenv_blacklist
。
- gitfs文件服務器刪除了以下配置選項:
gitfs_env_whitelist
配置選項已刪除,取而代之的是gitfs_saltenv_whitelist
。gitfs_env_blacklist
配置選項已被刪除,以支持gitfs_saltenv_blacklist
。
- hgfs文件服務器刪除了以下配置選項:
Engine Removal
由於服務已停用,Hipchat引擎已被刪除。 對於遷移到Slack的用戶,Slack引擎可能是合適的替代者。
Returner Removal
由於退役該服務,該hipchat returner已被移除。 對於遷移到Slack的用戶,Slack Returner可能是合適的替代者。
Grain Deprecations
對於smartos
,已經淘汰了一些grains。 這些grains已被去除。
hypervisor_uuid
已替換爲mdata:sdc:server_uuid
grain。datacenter
已替換爲mdata:sdc:datacenter_name
grain。
Cloud Deprecations
nova雲驅動程序已被刪除,以支持openstack雲驅動程序。
Jinja Filter Deprecations
以下jinja過濾器設置爲在Aluminum版本中刪除:
- json_decode_dict將替換爲tojson
- [json_decode_list](https://docs.saltstack.com/en/latest/topics/jinja/index.html#std:jinja_ref-json_decode_list替換爲tojson
Utils Deprecations
salt.utils.__init__.py
中的所有功能均已刪除。 這些包括:
- salt.utils.option
- salt.utils.required_module_list
- salt.utils.required_modules_error
- salt.utils.get_accumulator_dir. Please use salt.state.get_accumulator_dir() instead.
- salt.utils.fnmatch_multiple. Please use salt.utils.itertools.fnmatch_multiple() instead.
- salt.utils.appendproctitle. Please use salt.utils.process.appendproctitle() instead.
- salt.utils.daemonize. Please use salt.utils.process.daemonize() instead.
- salt.utils.daemonize_if. Please use salt.utils.process.daemonize_if() instead.
- salt.utils.reinit_crypto. Please use salt.utils.crypt.reinit_crypto() instead.
- salt.utils.pem_finger. Please use salt.utils.crypt.pem_finger() instead.
- salt.utils.to_bytes. Please use salt.utils.stringutils.to_bytes() instead.
- salt.utils.to_str. Please use salt.utils.stringutils.to_str() instead.
- salt.utils.to_unicode. Please use salt.utils.stringutils.to_unicode() instead.
- salt.utils.str_to_num. Please use salt.utils.stringutils.to_num() instead.
- salt.utils.is_quoted. Please use salt.utils.stringutils.is_quoted() instead.
- salt.utils.dequote. Please use salt.utils.stringutils.dequote() instead.
- salt.utils.is_hex. Please use salt.utils.stringutils.is_hex() instead.
- salt.utils.is_bin_str. Please use salt.utils.stringutils.is_binary() instead.
- salt.utils.rand_string. Please use salt.utils.stringutils.random() instead.
- salt.utils.contains_whitespace. Please use salt.utils.stringutils.contains_whitespace() instead.
- salt.utils.build_whitespace_split_regex. Please use salt.utils.stringutils.build_whitespace_split_regex() instead.
- salt.utils.expr_match. Please use salt.utils.stringutils.expr_match() instead.
- salt.utils.check_whitelist_blacklist. Please use salt.utils.stringutils.check_whitelist_blacklist() instead.
- salt.utils.check_include_exclude.Please use salt.utils.stringutils.check_include_exclude() instead.
- salt.utils.print_cli.Please use salt.utils.stringutils.print_cli() instead.
- salt.utils.clean_kwargs.Please use salt.utils.args.clean_kwargs() instead.
- salt.utils.invalid_kwargs.Please use salt.utils.args.invalid_kwargs() instead.
- salt.utils.shlex_split.Please use salt.utils.args.shlex_split() instead.
- salt.utils.arg_lookup.Please use salt.utils.args.arg_lookup() instead.
- salt.utils.argspec_report.Please use salt.utils.args.argspec_report() instead.
- salt.utils.split_input.Please use salt.utils.args.split_input() instead.
- salt.utils.test_mode.Please use salt.utils.args.test_mode() instead.
- salt.utils.format_call.Please use salt.utils.args.format_call() instead.
- salt.utils.which.Please use salt.utils.path.which() instead.
- salt.utils.which_bin.Please use salt.utils.path.which_bin() instead.
- salt.utils.path_join.Please use salt.utils.path.join() instead.
- salt.utils.check_or_die.Please use salt.utils.path.check_or_die() instead.
- salt.utils.sanitize_win_path_string.Please use salt.utils.path.sanitize_win_path() instead.
- salt.utils.rand_str.Please use salt.utils.hashutils.random_hash() instead.
- salt.utils.get_hash.Please use salt.utils.hashutils.get_hash() instead.
- salt.utils.is_windows.Please use salt.utils.platform.is_windows() instead.
- salt.utils.is_proxy.Please use salt.utils.platform.is_proxy() instead.
- salt.utils.is_linux.Please use salt.utils.platform.is_linux() instead.
- salt.utils.is_darwin.Please use salt.utils.platform.is_darwin() instead.
- salt.utils.is_sunos.Please use salt.utils.platform.is_sunos() instead.
- salt.utils.is_smartos.Please use salt.utils.platform.is_smartos() instead.
- salt.utils.is_smartos_globalzone.Please use salt.utils.platform.is_smartos_globalzone() instead.
- salt.utils.is_smartos_zone.Please use salt.utils.platform.is_smartos_zone() instead.
- salt.utils.is_freebsd.Please use salt.utils.platform.is_freebsd() instead.
- salt.utils.is_netbsd.Please use salt.utils.platform.is_netbsd() instead.
- salt.utils.is_openbsd.Please use salt.utils.platform.is_openbsd() instead.
- salt.utils.is_aix.Please use salt.utils.platform.is_aix() instead.
- salt.utils.safe_rm.Please use salt.utils.files.safe_rm() instead.
- salt.utils.is_empty.Please use salt.utils.files.is_empty() instead.
- salt.utils.fopen.Please use salt.utils.files.fopen() instead.
- salt.utils.flopen.Please use salt.utils.files.flopen() instead.
- salt.utils.fpopen.Please use salt.utils.files.fpopen() instead.
- salt.utils.rm_rf.Please use salt.utils.files.rm_rf() instead.
- salt.utils.mkstemp.Please use salt.utils.files.mkstemp() instead.
- salt.utils.istextfile.Please use salt.utils.files.is_text_file() instead.
- salt.utils.is_bin_file.Please use salt.utils.files.is_binary() instead.
- salt.utils.list_files.Please use salt.utils.files.list_files() instead.
- salt.utils.safe_walk.Please use salt.utils.files.safe_walk() instead.
- salt.utils.st_mode_to_octal.Please use salt.utils.files.st_mode_to_octal() instead.
- salt.utils.normalize_mode.Please use salt.utils.files.normalize_mode() instead.
- salt.utils.human_size_to_bytes.Please use salt.utils.files.human_size_to_bytes() instead.
- salt.utils.backup_minion.Please use salt.utils.files.backup_minion() instead.
- salt.utils.str_version_to_evr.Please use salt.utils.pkg.rpm.version_to_evr() instead.
- salt.utils.parse_docstring.Please use salt.utils.doc.parse_docstring() instead.
- salt.utils.compare_versions.Please use salt.utils.versions.compare() instead.
- salt.utils.version_cmp.Please use salt.utils.versions.version_cmp() instead.
- salt.utils.warn_until.Please use salt.utils.versions.warn_until() instead.
- salt.utils.kwargs_warn_until.Please use salt.utils.versions.kwargs_warn_until() instead.
- salt.utils.get_color_theme.Please use salt.utils.color.get_color_theme() instead.
- salt.utils.get_colors.Please use salt.utils.color.get_colors() instead.
- salt.utils.gen_state_tag.Please use salt.utils.state.gen_tag() instead.
- salt.utils.search_onfail_requisites.Please use salt.utils.state.search_onfail_requisites() instead.
- salt.utils.check_onfail_requisites.Please use salt.utils.state.check_onfail_requisites() instead.
- salt.utils.check_state_result.Please use salt.utils.state.check_result() instead.
- salt.utils.get_user.Please use salt.utils.user.get_user() instead.
- salt.utils.get_uid.Please use salt.utils.user.get_uid() instead.
- salt.utils.get_specific_user.Please use salt.utils.user.get_specific_user() instead.
- salt.utils.chugid.Please use salt.utils.user.chugid() instead.
- salt.utils.chugid_and_umask.Please use salt.utils.user.chugid_and_umask() instead.
- salt.utils.get_default_group.Please use salt.utils.user.get_default_group() instead.
- salt.utils.get_group_list.Please use salt.utils.user.get_group_list() instead.
- salt.utils.get_group_dict.Please use salt.utils.user.get_group_dict() instead.
- salt.utils.get_gid_list.Please use salt.utils.user.get_gid_list() instead.
- salt.utils.get_gid.Please use salt.utils.user.get_gid() instead.
- salt.utils.enable_ctrl_logoff_handler.Please use salt.utils.win_functions.enable_ctrl_logoff_handler() instead.
- salt.utils.traverse_dict.Please use salt.utils.data.traverse_dict() instead.
- salt.utils.traverse_dict_and_list.Please use salt.utils.data.traverse_dict_and_list() instead.
- salt.utils.filter_by.Please use salt.utils.data.filter_by() instead.
- salt.utils.subdict_match.Please use salt.utils.data.subdict_match() instead.
- salt.utils.substr_in_list.Please use salt.utils.data.substr_in_list() instead.
- salt.utils.is_dictlist.Please use salt.utils.data.is_dictlist() instead.
- salt.utils.repack_dictlist.Please use salt.utils.data.repack_dictlist() instead.
- salt.utils.compare_dicts.Please use salt.utils.data.compare_dicts() instead.
- salt.utils.compare_lists.Please use salt.utils.data.compare_lists() instead.
- salt.utils.decode_dict.Please use salt.utils.data.encode_dict() instead.
- salt.utils.decode_list.Please use salt.utils.data.encode_list() instead.
- salt.utils.exactly_n.Please use salt.utils.data.exactly_n() instead.
- salt.utils.exactly_one.Please use salt.utils.data.exactly_one() instead.
- salt.utils.is_list.Please use salt.utils.data.is_list() instead.
- salt.utils.is_iter.Please use salt.utils.data.is_iter() instead.
- salt.utils.isorted.Please use salt.utils.data.sorted_ignorecase() instead.
- salt.utils.is_true.Please use salt.utils.data.is_true() instead.
- salt.utils.mysql_to_dict.Please use salt.utils.data.mysql_to_dict() instead.
- salt.utils.simple_types_filter.Please use salt.utils.data.simple_types_filter() instead.
- salt.utils.ip_bracket.Please use salt.utils.zeromq.ip_bracket() instead.
- salt.utils.gen_mac.Please use salt.utils.network.gen_mac() instead.
- salt.utils.mac_str_to_bytes.Please use salt.utils.network.mac_str_to_bytes() instead.
- salt.utils.refresh_dns.Please use salt.utils.network.refresh_dns() instead.
- salt.utils.dns_check.Please use salt.utils.network.dns_check() instead.
- salt.utils.get_context.Please use salt.utils.stringutils.get_context() instead.
- salt.utils.get_master_key.Please use salt.utils.master.get_master_key() instead.
- salt.utils.get_values_of_matching_keys.Please use salt.utils.master.get_values_of_matching_keys() instead.
- salt.utils.date_cast.Please use salt.utils.dateutils.date_cast() instead.
- salt.utils.date_format.Please use salt.utils.dateutils.strftime() instead.
- salt.utils.total_seconds.Please use salt.utils.dateutils.total_seconds() instead.
- salt.utils.find_json.Please use salt.utils.json.find_json() instead.
- salt.utils.import_json.Please use salt.utils.json.import_json() instead.
- salt.utils.namespaced_function.Please use salt.utils.functools.namespaced_function() instead.
- salt.utils.alias_function.Please use salt.utils.functools.alias_function() instead.
- salt.utils.profile_func.Please use salt.utils.profile.profile_func() instead.
- salt.utils.activate_profile.Please use salt.utils.profile.activate_profile() instead.
- salt.utils.output_profile.Please use salt.utils.profile.output_profile() instead.
salt.auth.Authorize Class Removal
salt/auth/__init__.py
文件中的salt.auth.Authorize
類已刪除,salt/utils/minions.py
文件中的any_auth
方法已被刪除。 這些方法和類未在Salt代碼庫內部使用。