SaltStack配置管理(6) – 管理文件

在系统上获取正确的文件通常比安装正确的软件更有挑战性。salt有一个内置的文件服务器可以用来分发文件和目录到受控系统。

SALT://

你对放置在srv/salt目录的salt state文件应该熟悉了,不过你可能不知道的是,你放置在此目录中的任何其他文件和文件夹也可用于你的Salt minion。你可以在salt state文件中使用salt://引用srv/salt目录里的文件。

FILE.MANAGED

这个salt state函数允许你通过指定salt master上的源文件来管理本地文件。

  1. deploy the http.conf file:
  2.   file.managed:
  3.     – name: /etc/http/conf/http.conf
  4.     – source: salt://apache/http.conf

由于源路径以salt://开始,我们可以推断出salt master源文件实际路径为/srv/salt/apache/http.conf。
每一次应用这个salt state,salt会确保本地的文件与minion中的文件一致。这有助于确保应用程序在不同系统上配置相同。
例如,如果你需要分发包含自定义设置限制下载速度的lftp全局配置文件,我们可以使用file.managed来实现:

  1. install network packages:
  2.   pkg.installed:
  3.     – pkgs:
  4.       – rsync
  5.       – lftp
  6.       – curl
  7.  
  8. copy lftp config file:
  9.   file.managed:
  10.     – name: /etc/lftp.conf
  11.     – source: salt://_tmpl_lftp.conf

另一个选项,由于我们的配置文件只更改一行,所以我们可以使用file.append来简单地插入新的一行:

  1. install network packages:
  2.   pkg.installed:
  3.     – pkgs:
  4.       – rsync
  5.       – lftp
  6.       – curl
  7.  
  8. update lftp conf:
  9.   file.append:
  10.     – name: /etc/lftp.conf
  11.     – text: set net:limit-rate 100000:500000

FILE.RECURSE

这个salt state函数复制整个目录。

  1. copy some files to the web server:
  2.   file.recurse:
  3.     – name: /var/www
  4.     – source: salt://apache/www