SaltStack 3000 Release Notes - Codename Neon 新版本功能特性说明

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模块运行unlessonlyif条件。 字典必须包含一个参数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,因此onchangesprereq 等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
    
      @type forward
      port 24224
    
    
      @type file
      path /var/log/td-agent/saltstack
    

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的新功能函数applyslshighstate允许在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的支持。 请改用repositorytag
    • 从以下功能中删除了对image kwarg的支持。 在所有情况下,请同时使用repositorytag选项:
      • dockermod.build
      • dockermod.commit
      • dockermod.import
      • dockermod.load
      • dockermod.tag
  • 由于拼写错误,heat模块已从heat.create_stackheat.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:modfirewalld module 有以下变更:
    • firewalld.add_port 函数中force_masquerade选项的默认设置已从True更改为False
    • firewalld.add_port_fwd 函数中对force_masquerade选项的支持已从True更改为False
  • State Deprecations
    • 由于服务已停用,因此hipchat状态已被删除。 MS TeamsSlack可能是合适的替代品。
    • cmd状态模块已从cmd.run函数中删除了quiet的kwarg。 请改为将output_loglevel设置为quiet
    • 由于拼写错误,heat状态模块已从heat.deployed功能中删除了enviroment。 请改为使用environment
    • :py:modfirewalld 状态已更改如下:
      • firewalld.present函数中prune_services选项的默认设置已从True更改为False
  • 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

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代码库内部使用。

你可能感兴趣的:(SaltStack)