为了保持你的salt state模块化和可重用,每一个配置任务应该只在salt state树描述一次。如果你需要在多个地方使用同样的配置任务,你可以使用include指令。
include的使用很简单。在你的state文件的顶部(任何ID的外部),使用如下格式添加include:
- include:
- – sls1
- – sls2
其中sls1和sls2是你想include的sls文件名称。注意不需要添加.sls后缀。
如果你想include的state文件在salt state树的子目录,可以使用小圆点(.)作为目录分隔符:
- include:
- – dir.sls1
include的state文件是插入到当前state文件的顶部,并且会首先处理。
示例
还记得之前下面的示例吗?
- sync directory using lftp:
- cmd.run:
- – name: lftp -c "open -u {{ pillar[‘ftpusername’] }},{{ pillar[‘ftppassword’] }}
- -p 22 sftp://example.com;mirror -c -R /local /remote"
这个salt state依赖lftp命令,所以最好是创建另一个salt state来确保lftp已经安装。然后我们可以使用include来连接它们。
srv/salt/lftp.sls:
- install lftp:
- pkg.installed:
- – name: lftp
srv/salt/dir-sync.sls:
- include:
- – lftp
- sync directory using lftp:
- cmd.run:
- – name: lftp -c "open -u {{ pillar[‘ftpusername’] }},{{ pillar[‘ftppassword’] }}
- -p 22 sftp://example.com;mirror -c -R /local /remote"