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文件的新的stateexecution 模塊。 它允許添加/刪除/列出以及管理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,因此onchangesprereqrequisites條件現在在測試模式下可以正常運行。
  • 添加了新的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的新功能函數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 <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 TeamsSlack可能是合適的替代品。
    • cmd狀態模塊已從cmd.run函數中刪除了quiet的kwarg。 請改爲將output_loglevel設置爲quiet
    • 由於拼寫錯誤,heat狀態模塊已從heat.deployed功能中刪除了enviroment。 請改爲使用environment
    • :py:modfirewalld <salt.states.firewalld>狀態已更改如下:
      • 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代碼庫內部使用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章