SaltStack配置管理(3) – INCLUDE

为了保持你的salt state模块化和可重用,每一个配置任务应该只在salt state树描述一次。如果你需要在多个地方使用同样的配置任务,你可以使用include指令。
include的使用很简单。在你的state文件的顶部(任何ID的外部),使用如下格式添加include:

  1. include:
  2.   – sls1
  3.   – sls2

其中sls1和sls2是你想include的sls文件名称。注意不需要添加.sls后缀。
如果你想include的state文件在salt state树的子目录,可以使用小圆点(.)作为目录分隔符:

  1. include:
  2.   – dir.sls1

include的state文件是插入到当前state文件的顶部,并且会首先处理。

示例

还记得之前下面的示例吗?

  1. sync directory using lftp:
  2.   cmd.run:
  3.     – name: lftp -c "open -u {{ pillar[‘ftpusername’] }},{{ pillar[‘ftppassword’] }}
  4.            -p 22 sftp://example.com;mirror -c -R /local /remote"

这个salt state依赖lftp命令,所以最好是创建另一个salt state来确保lftp已经安装。然后我们可以使用include来连接它们。
srv/salt/lftp.sls:

  1. install lftp:
  2.   pkg.installed:
  3.     – name: lftp

srv/salt/dir-sync.sls:

  1. include:
  2.   – lftp
  3.  
  4. sync directory using lftp:
  5.   cmd.run:
  6.     – name: lftp -c "open -u {{ pillar[‘ftpusername’] }},{{ pillar[‘ftppassword’] }}
  7.            -p 22 sftp://example.com;mirror -c -R /local /remote"