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.example
和FORMULA
之外的所有文件都直接複製到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
- 將formula文件組裝到構建系統上的文件夾中。
- 創建一個FORMULA文件並把它放在上面文件夾的根目錄下。
- 運行
spm build <folder name>
, 安裝包在構建完成後會存放到/srv/spm_build folder
路徑下。
spm build /path/to/salt-packages-source/myapp-formula
- 將
.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,FORMULA
和LICENSE
將不會被安裝。 此規則的例外是已經特殊處理的文件,例如pillar.example
和_modules/
。
DEPENDENCIES
一個以逗號分隔的軟件包列表,作爲依賴項與此軟件包一起安裝。 安裝此軟件包後,SPM也會嘗試發現並安裝有依賴關係的軟件包。 如果無法執行,則拒絕安裝此軟件包。
這對於創建將其他包綁定在一起工作的包非常有用。 例如,一個名爲wordpress-mariadb-apache
的軟件包將依賴於wordpress,mariadb
和apache
。
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標記,用於將下一個多行塊標記爲文本,包括換行符。 在聲明pre
或post
states時使用此標記非常重要,以便可以正確評估其後面的文本。
LOCAL STATES
local
states是在系統本地進行評估, 這類似於使用salt-call --local
發出狀態運行的命令。 這些命令將在運行spm
命令的本地計算機上發出,無論該計算機是master還是minion。
local
states 不需要任何特殊參數,但它們仍然必須使用>
標記來表示狀態被評估爲文本而不是數據結構。
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_def
是FORMULA
文件的內容,作爲dict
。 conn
是從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()
檢查包數據庫是否已存在。 這是包數據庫文件的路徑。 此函數將返回True
或False
。
唯一可以預期的參數是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()
。
member
是tarfile
對象,表示單個文件。 在傳遞給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()
檢查文件系統上是否已存在該文件。 返回True
或False
。
此函數需要path
參數,該參數是要檢查的文件的絕對路徑。
PATH_ISDIR()
檢查指定的路徑是否是目錄。 返回True
或False
。
此函數需要path
參數,該參數是要檢查的絕對路徑。