salt管理---文件管理和目录管理

文件管理

还是必须打开/etc/salt/master里面的file_roots

在/srv/salt下编辑filetest.sls,内容如下:

  1 file_test:                               #自定义名称
  2   file.managed:                          #模块=文件管理
  3     - name: /tmp/test.txt                #放在minion端哪个目录下,并命名文件名字 
  4     - source: salt://test/file/123.txt   #来源的文件,这个目录相当于是在/srv/salt/test/file/里面
  5     - uesr: root                         #定义属主
  6     - group: root                        #定义属组
  7     - mode: 600                          #定义权限

编辑top.sls,增加- filetest

下面是执行:

[root@master salt]# salt 'minion' state.highstate 
minion:
----------
          ID: file_test
    Function: file.managed
        Name: /tmp/test.txt
      Result: True
     Comment: File /tmp/test.txt updated
     Started: 17:06:44.789373
    Duration: 242.994 ms
     Changes:   
              ----------
              diff:
                  New file

Summary
------------
Succeeded: 1 (changed=1)
Failed:    0
------------
Total states run:     1

执行成功,查看minion端的/tmp下是否有test.txt文件,查看权限、属主属组、内容是否正确。

[root@minion bin]# cat /tmp/test.txt 
djasldajsl
dasdl;as;
das;lk;
[root@minion bin]# ls -l /tmp/test.txt 
-rw------- 1 root root 29 3月  31 17:06 /tmp/test.txt


目录管理

目录管理和文件管理稍有不同。看测试:

编辑dirtest.sls

  1 dir_test:
  2   file.recurse:
  3     - name: /tmp/dir
  4     - source: salt://test/dir
  5     - user: root
  6     - group: root
  7     - file_mode: 600
  8     - dir_mode: 644             #设置目录权限,注意空格
  9     - mkdir: True               #查询是否有/tmp/dir目录,没有创建
 10     - clean: True               #clean的含义是,如果删除salt://test/dir的文件,那么/tmp/dir也会同步删除,这相当于rsync的--delete,不加不会同步删除。

然后再top.sls里面加入- dirtest

执行salt 'minion' state.highstate

报错:我在执行state后报错如下:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 111: ordinal not in range(128)
Traceback (most recent call last):
  File "/usr/bin/salt", line 10, in <module>
    salt_main()
  File "/usr/lib/python2.6/site-packages/salt/scripts.py", line 349, in salt_main
    client.run()
  File "/usr/lib/python2.6/site-packages/salt/cli/salt.py", line 210, in run
    self._output_ret(ret_, out)
  File "/usr/lib/python2.6/site-packages/salt/cli/salt.py", line 300, in _output_ret
    salt.output.display_output(ret, out, self.config)
  File "/usr/lib/python2.6/site-packages/salt/output/__init__.py", line 94, in display_output
    display_data = try_printout(data, out, opts)
  File "/usr/lib/python2.6/site-packages/salt/output/__init__.py", line 46, in try_printout
    return get_printout(out, opts)(data).rstrip()
  File "/usr/lib/python2.6/site-packages/salt/output/highstate.py", line 84, in output
    return _format_host(host, hostdata)[0]
  File "/usr/lib/python2.6/site-packages/salt/output/highstate.py", line 112, in _format_host
    .format(hcolor, err, colors)))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xef in position 111: ordinal not in range(128)


找不到其他原因,再去查看dirtest.sls文件,这次我查看了一下是不是因为空格原因,在低行模式下使用了:set list,截图如下


看到了没,红框标注的地方,就是空格造成的问题,去掉不该有的空格,加上该有空格的地方。再次执行就正常了。


salt states介绍:

salt states的核心是sls文件,该文件使用YAML语法定义了一些k/v的数据。

sls文件存放根路径在master配置文件中定义,默认为/srv/salt,该目录在操作系统上不存在,需要手动创建。

在salt中可以通过salt://代替根路径,例如你可以通过salt://top.sls访问/srv/salt/top.sls

在states中top文件也由master配置文件定义,默认为top.sls,该文件为states的入口文件。

只要是sls文件,就需要使用state.highstate去执行。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值