SaltStack状态管理(SLS)之文件管理
软件版本:
- Python 3
- SaltStack 2018.3.1
- CentOS 7
SLS文件中,管理文件最常用的模块就是file模块了。在Linux中一切皆文件,Python中一切皆对象。所以salt的文件管理包括了文件和目录。详细说明下file模块下常用方法。
在介绍文件管理前,需要先了解一些处理状态间的关系(requisites):
- require # 表示我依赖某个状态
- require_in # 表示我被某个状态依赖
- watch # 表示我关注某个状态
- watch_in # 表示我被某个状态关注
- onlyif # 仅当onlyif后面命令返回True时才执行name定义的命令。常和cmd.run模块关联使用。
- unless # 仅当unless后面命令返回False时才执行name定义的命令。
(1)managed 方法:管理某个文件,这是file模块中最常用的方法。这个方法会重点讲解.
salt.states.file.managed(name, source=None, source_hash=u'', source_hash_name=None, keep_source=True, user=None, group=None, mode=None, attrs=None, template=None, makedirs=False, dir_mode=None, context=None, replace=True, defaults=None, backup=u'', show_changes=True, create=True, contents=None, tmp_ext=u'', contents_pillar=None, contents_grains=None, contents_newline=True, contents_delimiter=u':', encoding=None, encoding_errors=u'strict', allow_empty=True, follow_symlinks=True, check_cmd=None, skip_verify=False, win_owner=None, win_perms=None, win_deny_perms=None, win_inheritance=True, win_perms_reset=False, **kwargs)
# 参数:
name
source
source_hash
source_hash_name
keep_source
user
group
mode
attrs
template
makedirs
dir_mode
replace
context
defaults
backup
show_changes
create
contents
contents_pillar
contents_grains
contents_newline
contents_delimiter
encoding
encoding_errors
allow_empty
follow_symlinks
check_cmd
tmp_ext
skip_verify
win_owner
win_perms
win_deny_perms
win_inheritance
win_perms_reset
(2)absent 方法:确保文件或目录不存在,存在则删除,不存在则无操作并且不会报错。
salt.states.file.absent(name, **kwargs)
# 参数说明:
name: 标记要删除的文件或目录的绝对路径!
[root@salt-master test]# vim wang.sls delete_file: file.absent: - name: /data [root@salt-master test]# salt '*' state.sls wang saltenv='test' # 说明 saltenv='test' 表示使用test环境,而不是默认base环境 salt-minion: ---------- ID: delete_file Function: file.absent Name: /data Result: True Comment: File /data is not present Started: 17:29:08.308577 Duration: 0.741 ms Changes: Summary for salt-minion ------------ Succeeded: 1 Failed: 0 ------------ Total states run: 1 Total run time: 0.741 ms salt-master: ---------- ID: delete_file Function: file.absent Name: /data Result: True Comment: Removed directory /data Started: 17:28:42.394502 Duration: 10.094 ms Changes: ---------- removed: /data Summary for salt-master ------------ Succeeded: 1 (changed=1) Failed: 0 ------------ Total states run: 1 Total run time: 10.094 ms
(3)append 方法:向文件末尾追加文本内容,如果追加的内容已经存在于文件结尾,则不会有任何操作。
salt.states.file.append(name, text=None, makedirs=False, source=None, source_hash=None, template=u'jinja', sources=None, source_hashes=None, defaults=None, context=None, ignore_whitespace=True)
# 参数说明:
name: 说明要追加内容的文件绝对路径
text: 要追加的文本内容
makedirs: 默认是False,表示如果文件的父目录不存在的话就会返回失败。如果改为True, 则表示如果父目录不存在话就自动创建。
source:

浙公网安备 33010602011771号