SALT PACKAGE MANAGER-SPM包管理系統

SALT PACKAGE MANAGER

Status: Technical Review

Salt Package Manager(前端管理命令是SPM),允許打包Salt formulas以簡化Salt master服務器的分發操作。 SPM的設計受到其他現有包管理系統的影響,包括RPM,Yum和Pacman。

相同內容也可以參考github上的這份資料:SALT PACKAGE MANAGER
在這裏插入圖片描述

注意:上圖將每個SPM組件顯示爲不同的系統,但這不是必需的。 如果你願意,可以在單個Salt master上構建軟件包並託管SPM存儲庫。

內容索引

  • Building SPM Packages
    • Package Build Overview
    • Package Installation Overview
    • Building an SPM Formula Package
    • Types of Packages
    • Technical Information
    • SPM-Specific Loader Modules
  • Distributing SPM Packages
    • Setting up a Package Repository
    • Adding a Package to the repository
    • Generate Repo Metadata
  • Installing SPM Packages
    • Configuring Remote Repositories
    • Update File Roots
    • Installing Packages
    • Pillars
    • Removing Packages
  • SPM Configuration
    • spm_logfile
    • spm_repos_config
    • spm_cache_dir
    • spm_db
    • spm_build_dir
    • spm_build_exclude
    • formula
    • reactor
    • conf
  • FORMULA File
    • Required Fields
    • name
    • os
    • os_family
    • version
    • minimum_version
    • release
    • summary
    • description
  • Optional Fields
    • top_level_dir
    • dependencies
    • optional
    • recommended
    • files
    • local States
    • tgt States
    • Templating States
  • SPM Development Guide
    • SPM-Specific Loader Modules

Building SPM Packages

打包系統用於將公式使用的state, pillar, file templates和其他文件打包到單個文件中。 創建formula package後,它將被複制到存儲庫系統,在那裏它供Salt masters服務器使用。

Status: Technical Review

使用Salt Package Manager的第一步是爲要分發的每個公式構建安裝包。 你可以在任何可以安裝Salt的系統上構建軟件包。

PACKAGE BUILD OVERVIEW

要構建程序包,公式使用的所有state,pilla,jinja和文件模板都將組裝到構建系統上的文件夾中。 這些文件可以從Git存儲庫克隆,例如在GitHub上的saltstack-formula組織中找到的文件,或直接複製到該文件夾。

下圖演示了構建系統上的典型佈局:
在這裏插入圖片描述
在此示例中,所有公式文件都放在myapp-formula文件夾中。 這是構建此包時spm build命令所使用的目標文件夾。

在這個文件夾中,pillar數據放在根目錄下的pillar.example文件中,所有state,jinja和模板文件都放在一個以打包的應用程序命名的子文件夾中。 state文件通常包含在子文件夾中,類似於狀態樹中狀態文件的組織方式。 包中未包含在子文件夾中的任何非pillar文件都放在spm狀態樹的根目錄下。

此外,需要創建一個 FORMULA 文件並將其放在文件夾的根目錄中。 此文件包含SPM使用的包元數據。

PACKAGE INSTALLATION OVERVIEW

構建包時,瞭解Salt master上文件的安裝位置很有用。 在安裝過程中,除了pillar.exampleFORMULA之外的所有文件都直接複製到Salt master(位於\srv\spm\salt)的spm狀態樹中。

如果根目錄中存在pillar.example文件,則將其重命名爲<formula name>.sls.orig並放在pillar_path中。
在這裏插入圖片描述

注意:即使將pillar數據文件複製到pillar root,仍然需要使用pillar top file將該pillar數據分配給系統。 此文件也可以複製和重命名,保持.orig版本內容不變,以備日後需要恢復時使用。

BUILDING AN SPM FORMULA PACKAGE

  1. 將formula文件組裝到構建系統上的文件夾中。
  2. 創建一個FORMULA文件並把它放在上面文件夾的根目錄下。
  3. 運行spm build <folder name>, 安裝包在構建完成後會存放到 /srv/spm_build folder路徑下。
spm build /path/to/salt-packages-source/myapp-formula
  1. .spm 文件複製到存儲庫系統中。

TYPES OF PACKAGES

SPM支持多種類型的包。 每個包的名稱也表明了其功能。 例如,以-formula結束的包被認爲是Salt States(最常見的formula類型)。 以-conf結尾的包包含要放在/etc/salt/目錄中的配置。 不包含以上名稱後綴的包會被視爲等同於具有-formula的名稱。

FORMULA

默認情況下,這一類型的安裝包中的大多數文件都位於/srv/spm/salt/目錄中。只有 pillar.example文件例外,它將重命名爲<package_name>.sls並放在pillar目錄中(默認情況下爲/srv/spm/pillar/)。

REACTOR

默認情況下,這一類型的安裝包中的大多數文件都位於 /srv/spm/reactor/ 目錄中。

CONF

此類軟件包中的文件是Salt的配置文件,通常位於/etc/salt/目錄中。 原則上,Salt之外的程序包使用的配置文件建議使用Salt State(也就是使用formula類型的包)進行處理。

TECHNICAL INFORMATION

軟件包是使用BZ2壓縮的tarball構建的。 默認情況下,使用sqlite3驅動程序存儲包數據庫(請參閱下面的Loader Modules)。

對這些內容的支持是內置於Python中的,因此不需要外部依賴項。

屬於SPM的所有其他文件都使用YAML,以實現可移植性,易用性和可維護性。

SPM-SPECIFIC LOADER MODULES

SPM的設計與傳統的包管理器相似,後者將文件應用於文件系統並將包元數據存儲在本地數據庫中。 但是,由於現代基礎架構通常超出了這些用例,因此SPM的某些部分已經分解爲它們自己的模塊集。

PACKAGE DATABASE

默認情況下,使用sqlite3模塊存儲包數據庫。 選擇此模塊是因爲對SQLite3的支持是內置於Python本身的。

有關爲包數據庫管理創建新模塊的信息,請參閱“SPM開發指南”。

PACKAGE FILES

默認情況下,使用local模塊安裝包文件。 此模塊將文件部署於安裝軟件包的計算機上的本地文件系統。

有關爲軟件包的文件管理創建新模塊的說明信息,請參閱 SPM開發指南

Distributing SPM Packages

Status: Technical Review

Repo系統存儲SPM包和元數據文件,並通過http(s),ftp或file URLs將它們提供給Salt masters服務器。 SPM存儲庫可以託管在可以安裝Salt的任何系統上。 安裝了Salt後,可以在更新包或向存儲庫添加包時運行spm create_repo命令。 SPM repos不需要salt-master,salt-minion或系統上運行的任何其他進程。

注意:如果你希望在不能或不想安裝Salt的系統上託管SPM存儲庫,則可以在構建系統上運行spm create_repo命令,然後將包和生成的SPM-METADATA文件複製到存儲庫。 此外,你還可以直接在Salt master上安裝SPM文件,完全繞過存儲庫。

SETTING UP A PACKAGE REPOSITORY

包構建完成後,生成的SPM文件將放在srv/spm_build文件夾中。

將構建的SPM文件放在存儲庫服務器上的位置取決於你計劃如何將它們提供給Salt masters服務器。

可以通過網絡共享srv/spm_build文件夾,或將文件複製到FTP或Web服務器。

ADDING A PACKAGE TO THE REPOSITORY

只需將SPM文件複製到repo文件夾,然後生成repo元數據即可添加新軟件包。

GENERATE REPO METADATA

每次更新或向存儲庫添加SPM包時,請執行spm create_repo命令:

spm create_repo /srv/spm_build

SPM爲該目錄中的所有包生成存儲庫元數據,並將其放在文件夾根目錄下的SPM-METADATA文件中。 無論存儲庫元數據是否已存在於該目錄中,都需要執行此命令。

INSTALLING SPM PACKAGES

Status: Technical Review

SPM軟件包安裝在Salt master中,可以使用Salt的各種包管理功能對minions進行管理。

CONFIGURING REMOTE REPOSITORIES

在SPM可以正常使用存儲庫之前,需要做好兩件事。 首先,Salt master需要通過配置知道存儲庫的位置信息。 然後它需要下拉存儲庫元數據。

REPOSITORY CONFIGURATION FILES

通過將每個存儲庫添加到Salt master服務器上的/etc/salt/spm.repos.d/spm.repo文件來配置存儲庫。 此文件包含存儲庫的名稱以及存儲庫的鏈接:

my_repo:
  url: https://spm.example.com/

對於使用HTTP/HTTPS訪問認證的,需要定義認證信息:

my_repo:
  url: https://spm.example.com/
  username: user
  password: pass

注意做好這個配置文件的訪問限制, 建議至少將文件權限設置爲0640 。

URL可以使用http, https, ftp, or file等協議。

my_repo:
  url: file:///srv/spm_build

** UPDATING LOCAL REPOSITORY METADATA**

在Salt master上配置存儲庫後,使用spm update_repo命令下載存儲庫元數據:

spm update_repo

運行update_repo命令後,每個repo都會有一個文件都放在Salt master上的/var/cache/salt/spm中。 如果添加存儲庫但似乎沒有成功,請檢查此路徑以驗證是否找到了存儲庫。

UPDATE FILE ROOTS

SPM軟件包安裝在Salt master上的srv/spm/salt文件夾中。 需要手動將此路徑添加到Salt master上的文件根目錄。

file_roots:
  base:
    - /srv/salt
    - /srv/spm/salt

重啓salt-master 服務,以使配置生效。

INSTALLING PACKAGES

使用spm install命令安裝軟件包:

spm install apache

警告:目前,SPM在安裝軟件包之前不會檢查文件是否已存在。 這意味着現有文件將被覆蓋而不會發出警告。

INSTALLING DIRECTLY FROM AN SPM FILE

還可以使用spm local install命令,直接使用本地SPM文件安裝SPM軟件包:

spm local install /srv/spm/apache-201506-1.spm

當使用spm local install命令時,並不需要預先配置好一個SPM存儲庫。

PILLARS

如果已安裝的軟件包中包含Pillar數據,請確保在pillar Top file中將pillar數據和相應的系統建立映射關係。

REMOVING PACKAGES

可以使用spm remove command命令刪除之前安裝的軟件包:

spm remove apache

如果文件已被修改,則不會刪除它們。 空目錄將被刪除。

SPM Configuration

在salt master的配置文件中有許多特定於SPM的選項。 這些配置項既可以在master配置文件中配置,也可以在SPM自己的spm配置文件中配置(通常位於/etc/salt/spm)。 如果在兩個位置都配置,則以spm文件優先。 通常,不需要對默認值進行變更。

SPM_LOGFILE

Default: /var/log/salt/spm

SPM_REPOS_CONFIG

Default: /etc/salt/spm.repos

SPM存儲庫使用此文件進行配置。 還有一個與之對應的目錄,以.d結尾。 例如,如果文件名是/etc/salt/spm.repos,則目錄爲/etc/salt/spm.repos.d/

SPM_CACHE_DIR

Default: /var/cache/salt/spm

當SPM更新軟件包存儲庫元數據和打包時,它們將被放置在此目錄中。 軟件包數據庫(通常稱爲packages.db)也位於此目錄中。

SPM_DB

Default: /var/cache/salt/spm/packages.db

包數據庫的位置和名稱。 該數據庫中存儲了系統上安裝的所有SPM軟件包的名稱,屬於它們的文件以及這些文件的元數據。

SPM_BUILD_DIR

Default: /srv/spm_build

在需要構建一個軟件包時,把構建所使用的各種資源文件放入這個目錄中。

SPM_BUILD_EXCLUDE

Default: ['.git']

當使用SPM構建包時,它通常會將formula目錄中的所有文件添加到包中。 唯有此處列出的文件將從該包中排除掉。 此選項需要使用列表的形式進行指定。

spm_build_exclude:
  - .git
  - .svn

FORMULA File

除了公式本身,還必須有一個對包進行描述的FORMULA文件。 下面是該文件的一個示例:

name: apache
os: RedHat, Debian, Ubuntu, SUSE, FreeBSD
os_family: RedHat, Debian, Suse, FreeBSD
version: 201506
release: 2
summary: Formula for installing Apache
description: Formula for installing Apache

REQUIRED FIELDS

下面是這個配置文件中必須包含的一些配置參數。

NAME

包的名稱,它將顯示在包文件名、存儲庫元數據和包數據庫中。 即使源公式名稱中包含-formula的後綴,此名稱也可能不包含該名稱。 例如,在打包apache-formula時,名稱應設置爲apache

OS

該公式支持的os grain的值。 這用於幫助用戶瞭解哪些操作系統可以支持此軟件包。

OS_FAMILY

此公式支持的os_family grain的值。 這用於幫助用戶瞭解哪些操作系統系列可以支持此軟件包。

VERSION

包的版本。 雖然由管理此軟件包的組織負責,但建議以YYYYMM格式指定此版本。 例如,如果此版本於2015年6月發佈,則軟件包版本應爲201506 。如果在一個月內發佈多個版本,還應同時使用release字段。

MINIMUM_VERSION

Salt使用此公式的最低推薦版本。 目前尚未作爲強制要求執行。

RELEASE

此字段主要指版本的發佈,但也指一個月內的多個版本。 通常,如果某個已公開的版本,需要立即進行更新,則應更新此字段。

SUMMARY

一行關於包的描述信息。

DESCRIPTION

關於包的詳細說明信息,可以多行。

OPTIONAL FIELDS

下面的配置參數,是可選的。

TOP_LEVEL_DIR

此字段是可選的,但強烈建議使用。 如果未指定,將使用包名稱。

公式存儲庫通常不會將.sls文件存儲在存儲庫的根目錄中; 相反,它們存儲在子目錄中。 例如,apache-formula存儲庫將包含一個名爲apache的目錄,該目錄將包含init.sls以及許多其他相關文件。 在這種情況下,top_level_dir應設置爲apache

top_level_dir之外的文件,例如README.rst,FORMULALICENSE將不會被安裝。 此規則的例外是已經特殊處理的文件,例如pillar.example_modules/

DEPENDENCIES

一個以逗號分隔的軟件包列表,作爲依賴項與此軟件包一起安裝。 安裝此軟件包後,SPM也會嘗試發現並安裝有依賴關係的軟件包。 如果無法執行,則拒絕安裝此軟件包。

這對於創建將其他包綁定在一起工作的包非常有用。 例如,一個名爲wordpress-mariadb-apache的軟件包將依賴於wordpress,mariadbapache

OPTIONAL

一個以逗號分隔的與此包相關的包列表,但不是必需的,也不一定是推薦的。 將程序包安裝到SPM時,此列表將顯示在參考消息中。

RECOMMENDED

一個以逗號分隔的可選包列表,建議隨包一起安裝。 將程序包安裝到SPM時,此列表將顯示在參考消息中。

FILES

可以添加一個文件的配置段落,以指定要添加到SPM的文件列表。 這樣的配置部分可能看起來像:

files:
  - _pillar
  - FORMULA
  - _runners
  - d|mymodule/index.rst
  - r|README.rst

在配置了指定文件後,無論目錄中存在哪些其他文件,也只有這些文件纔會添加到SPM。 它們將按指定的順序添加,如果需要按特定順序放置文件,這將非常有用。

從上面的示例中可以看出,還可以將文件標記爲特定類型。 這是通過預先掛起具有其類型的文件名,然後是管道(|)字符來完成的。 上面的示例中包含文檔文件和自述文件。 可用的文件類型是:

  • c: config file
  • d: documentation file
  • g: ghost file (i.e. the file contents are not included in the package payload)
  • l: license file
  • r: readme file
  • s: SLS file
  • m: Salt module

前面5種類型的文件 (c, d, g, l, r) 將默認地放在 /usr/share/salt/spm/目錄中。這可以通過/etc/salt/spm中的 spm_share_dir 配置項進行定義。

基本後的兩種類型(s, m)目前還沒有做支持,是爲日後做的預留。

PRE AND POST STATES

通過使用pre和post states,可以在安裝包之前和之後運行Salt狀態。 以下部分可以在公式中聲明:

  • pre_local_state
  • pre_tgt_state
  • post_local_state
  • post_tgt_state

在安裝軟件包之前評估名稱中包含pre的部分,並在安裝軟件包之後評估具有post的部分。 在tgt states之前評估local states。

這些部分中的每一部分都需要作爲文本進行評估,而不是作爲YAML進行評估。 考慮以下配置塊:

pre_local_state: >
  echo test > /tmp/spmtest:
    cmd:
      - run

請注意,此聲明中在pre_local_state之後使用>。 這是一個YAML標記,用於將下一個多行塊標記爲文本,包括換行符。 在聲明prepost states時使用此標記非常重要,以便可以正確評估其後面的文本。

LOCAL STATES

local states是在系統本地進行評估, 這類似於使用salt-call --local發出狀態運行的命令。 這些命令將在運行spm命令的本地計算機上發出,無論該計算機是master還是minion。

localstates 不需要任何特殊參數,但它們仍然必須使用>標記來表示狀態被評估爲文本而不是數據結構。

pre_local_state: >
  echo test > /tmp/spmtest:
    cmd:
      - run

TGT STATES

tgt狀態是針對遠程目標發佈的。 這類似於使用salt命令發出的狀態管理命令。 因此,它要求運行spm命令的機器是Salt master主機。

因爲tgt狀態要求指定目標,所以它們的代碼塊有點不同。 看以下狀態:

pre_tgt_state:
  tgt: '*'
  data: >
    echo test > /tmp/spmtest:
      cmd:
        - run

使用tgt狀態,狀態數據位於*_tgt_state代碼塊內的data部分下。 目標當然被指定爲tgt,此外也可以選擇指定tgt_type(默認爲glob)。

仍然需要使用>標記,但這次它是針對data行配置,而不是* _tgt_state這一行。

TEMPLATING STATES

狀態數據必須作爲文本而不是數據結構進行評估的原因是,因爲狀態數據首先通過渲染引擎進行處理,就像使用標準狀態運行一樣。

這意味着你可以在Salt中使用Jinja或任何其他受支持的渲染器。 渲染器可以使用所有公式變量,因此如果需要,你可以在state內引用FORMULA數據:

pre_tgt_state:
  tgt: '*'
  data: >
     echo {{ name }} > /tmp/spmtest:
      cmd:
        - run

也可以在FORMULA中聲明自己的變量。 如果SPM無法識別它們,那麼它將忽略它們,因此除了避免使用保留字之外,對變量名稱沒有限制。

默認情況下,渲染器設置爲jinja|yaml。 可以通過更改FORMULA本身中的渲染器設置來更改此設置。

BUILDING A PACKAGE

創建FORMULA文件後,將其放入要轉換爲包的公式的根目錄中。 spm build命令用於將該公式轉換爲包:

spm build /path/to/saltstack-formulas/apache-formula

包構建結果會存放於構建目錄中,默認地,這個目錄位於 /srv/spm/

LOADER MODULES

當把一個execution module放在master上的<file_roots>/_ modules/中時,下次執行同步操作時,它將自動同步到minions。 其他模塊也以這種方式傳播:state模塊可以放在_states/中,依此類推。

當SPM檢測到位於其中一個目錄中的程序包中的文件時,該目錄將放在<file_roots>中,而不是放在公式目錄中和其餘文件在一起。

SPM Development Guide

本文檔討論了SPM二次開發的方法。

SPM-SPECIFIC LOADER MODULES

SPM was designed to behave like traditional package managers, which apply files to the filesystem and store package metadata in a local database. However, because modern infrastructures often extend beyond those use cases, certain parts of SPM have been broken out into their own set of modules.

Each function that accepts arguments has a set of required and optional arguments. Take note that SPM will pass all arguments in, and therefore each function must accept each of those arguments. However, arguments that are marked as required are crucial to SPM’s core functionality, while arguments that are marked as optional are provided as a benefit to the module, if it needs to use them.

SPM的設計與傳統的包管理器相似,後者將文件存放於文件系統並將包元數據存儲在本地數據庫中。 但是,由於現代基礎架構通常超出了這些用例場景,因此SPM的某些部分已經拆分爲它們自己的模塊集。

每個接受參數的函數都有一組必需參數和可選參數。 請注意,SPM將傳遞所有參數,因此每個函數必須接受每個參數。 但是,標記爲必需的參數對SPM的核心功能更加重要,而標記爲可選的參數可以在需要時使用它們。

PACKAGE DATABASE

默認地,包數據庫是使用sqlite3作爲數據庫. 選用這個模塊的原因是,該模塊是內建於Python中的。

用於管理包數據庫的模塊存儲在salt/spm/pkgdb/目錄中。 有一些功能函數是用來支持數據庫管理的。

INIT()

獲取數據庫連接,並在必要時初始化包數據庫。

此函數不接受任何參數。 如果使用支持連接對象的數據庫,則返回該連接對象。 例如,sqlite3模塊從sqlite3庫返回一個connect()對象:

conn = sqlite3.connect(__opts__['spm_db'], isolation_level=None)
...
return conn

SPM本身不會使用此連接對象; 它將按原樣傳遞給模塊中的其他函數。 因此,在設置此對象時,請確保以易於在整個模塊中使用的方式執行此操作。

INFO()

返回包的信息。 這通常包含存儲在包中FORMULA文件中的信息。

按順序傳入的參數是package(必需)和conn(可選)。

package是包的名稱,如FORMULA中所指定。 conn是從init()返回的連接對象。

LIST_FILES()

返回已安裝軟件包的文件列表。 只返回文件名,沒有其他信息。

按順序傳入的參數是package(必需)和conn(可選)。

package是包的名稱,如FORMULA中所指定。 conn是從init()返回的連接對象。

REGISTER_PKG()

在包數據庫中註冊包。 此功能不會返回任何內容。

按順序傳入的參數是name(必需),formula_def(必需)和conn(可選)。

name是包的名稱,如FORMULA中所指定。 formula_defFORMULA文件的內容,作爲dictconn是從init()返回的連接對象。

REGISTER_FILE()

在包數據庫中註冊文件。 此功能不會返回任何內容。

傳入的參數是name(必需),member(必需),path(必需),digest(可選)和conn(可選)。

name是包的名稱。

member是包文件的一個tarfile對象。 它包含在內,因爲它包含文件的大部分信息。

path是本地文件系統上文件的位置。

digest是文件的SHA1校驗和。

conn是從init()返回的連接對象。

UNREGISTER_PKG()

從包數據庫中取消註冊包。 這通常只涉及從數據庫中刪除包的記錄。 此功能不會返回任何內容。

按順序傳入的參數是name(必需)和conn(可選)。

name是包的名稱,如FORMULA中所指定。 conn是從init()返回的連接對象。

UNREGISTER_FILE()

從包數據庫中取消註冊文件。 這通常只涉及從數據庫中刪除文件的記錄。 此功能不會返回任何內容。

DB_EXISTS()

檢查包數據庫是否已存在。 這是包數據庫文件的路徑。 此函數將返回TrueFalse

唯一可以預期的參數是db_,它是包數據庫文件。

PACKAGE FILES

默認情況下,使用local模塊安裝包文件。 此模塊將文件部署於安裝軟件包的計算機上的本地文件系統。

用於管理包文件的模塊存儲在salt/spm/pkgfiles/目錄中。 還需要一些其他的功能函數才能支持文件管理功能。

INIT()

初始化包文件的安裝位置。 通常這些將是目錄路徑,但可以使用其他外部目標,例如數據庫。 因此,此函數將返回一個連接對象,該對象可以是數據庫對象。 但是,在默認local模塊中,此對象是包含路徑的dict。 該對象將被傳遞到所有其他函數中。

三個目錄用於目標:formula_path,pillar_path和``reactor_path

formula_path是將要安裝的大多數文件的位置。 默認值特定於操作系統,但通常爲/srv/salt/

pillar_path是將安裝pillar.example文件的位置。 默認值是特定於操作系統的,但通常是/srv/pillar/

reactor_path是將安裝reactor文件的位置。 默認值特定於操作系統,但通常爲/srv/reactor/

CHECK_EXISTING()

檢查文件系統中的現有文件。 將檢查程序包的所有文件,如果檢測到已經存在任何文件,則此函數通常會聲明SPM將拒絕安裝程序包。

此函數返回系統上存在的文件列表。

傳遞給此函數的參數依次爲:package(必需),pkg_files(必需),formula_def(必需)和conn(可選)。

package是要安裝的軟件包的名稱。

pkg_files是要檢查的文件的列表。

formula_def是存儲在FORMULA文件中的信息的副本。

conn是文件連接對象。

INSTALL_FILE()

將一個文件安裝到目標(通常在文件系統上)。

此函數返回文件安裝到的最終位置。

傳遞給此函數的參數依次是package(必需),formula_tar(必需),member(必需),formula_def(必需)和conn(可選)。

package是要安裝的軟件包的名稱。

formula_tar是包的tarfile對象。 傳入此方法,以便函數可以爲文件調用formula_tar.extract()

membertarfile對象,表示單個文件。 在傳遞給formula_tar.extract()之前,可以根據需要對其進行修改。

formula_def是FORMULA文件中信息的副本。

conn是文件連接對象。

REMOVE_FILE()

從文件系統中刪除單個文件。 通常這只是一個os.remove()。 此功能不會返回任何內容。

傳遞給此函數的參數依次是path(必需)和conn(可選)。

path是要刪除的文件的絕對路徑。

conn是文件連接對象。

HASH_FILE()

返回文件的hexdigest哈希值。

傳遞給此函數的參數依次是path(必需),hashobj(必需)和conn(可選)。

path是文件的絕對路徑。

hashobj是對hashlib.sha1()的引用,用於爲文件提取hexdigest()

conn是文件連接對象。

此功能的使用通常不會比以下更復雜:

def hash_file(path, hashobj, conn=None):
    with salt.utils.files.fopen(path, 'r') as f:
        hashobj.update(f.read())
        return hashobj.hexdigest()

PATH_EXISTS()

檢查文件系統上是否已存在該文件。 返回TrueFalse

此函數需要path參數,該參數是要檢查的文件的絕對路徑。

PATH_ISDIR()

檢查指定的路徑是否是目錄。 返回TrueFalse

此函數需要path參數,該參數是要檢查的絕對路徑。

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