在系统上获取正确的文件通常比安装正确的软件更有挑战性。salt有一个内置的文件服务器可以用来分发文件和目录到受控系统。
SALT://
你对放置在srv/salt目录的salt state文件应该熟悉了,不过你可能不知道的是,你放置在此目录中的任何其他文件和文件夹也可用于你的Salt minion。你可以在salt state文件中使用salt://引用srv/salt目录里的文件。
FILE.MANAGED
这个salt state函数允许你通过指定salt master上的源文件来管理本地文件。
- deploy the http.conf file:
- file.managed:
- - name: /etc/http/conf/http.conf
- - source: salt://apache/http.conf
由于源路径以salt://开始,我们可以推断出salt master源文件实际路径为/srv/salt/apache/http.conf。
每一次应用这个salt state,salt会确保本地的文件与minion中的文件一致。这有助于确保应用程序在不同系统上配置相同。
例如,如果你需要分发包含自定义设置限制下载速度的lftp全局配置文件,我们可以使用file.managed来实现:
- install network packages:
- pkg.installed:
- - pkgs:
- - rsync
- - lftp
- - curl
-
- copy lftp config file:
- file.managed:
- - name: /etc/lftp.conf
- - source: salt://_tmpl_lftp.conf
另一个选项,由于我们的配置文件只更改一行,所以我们可以使用file.append来简单地插入新的一行:
- install network packages:
- pkg.installed:
- - pkgs:
- - rsync
- - lftp
- - curl
-
- update lftp conf:
- file.append:
- - name: /etc/lftp.conf
- - text: set net:limit-rate 100000:500000
FILE.RECURSE
这个salt state函数复制整个目录。
- copy some files to the web server:
- file.recurse:
- - name: /var/www
- - source: salt://apache/www