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: 

  

posted @ 2018-06-15 17:37  Auvღ  阅读(456)  评论(0)    收藏  举报