在一个命令执行之后,minion会将执行结果返回给master,这些结果默认是存储在master本机的/var/cache/salt/master/jobs/
目录下,这个目录可以在配置文件里面自定义。
除了默认的缓存机制,salt还提供了额外的两种机制,来将数据存储到其他的系统中,比如数据库, 本地的系统日志,或者其他你想存储的地方。
- External Job Cache
- Master Job Cache
这两种机制之间的最大的区别在于结果是从哪里返回的。(master还是minion)
External Job Cache -minion side returner
配置使用 External Job Cache 时,数据会和之前一样,返回到 salt master 本地的默认缓存。同时 minion 会运用salt returner 模块发送到配置的外部存储中。
- 优点:数据的存储不会给 master 造成额外的负担。
- 缺点:每个 minion 都需要连接到外部存储器,会产生大量的链接。同时需要在所有的 minion 配置returner 模块。
Master Job Cache -master side returner
2014.7.0.这个版本之后的支持
可以通过配置 Master Job Cache ,从 salt master 返回执行结果到外部存储中。这样就不用在每一台minion上配置 External Job Cache。在这种配置中,minion和之前一样返回结果到 master 的 Default Job Cache,之后master通过自身运行的Salt returner模块将数据发送到外部存储中。
- 优点:外部存储设备只需要一个连接,这个对数据库或者类似的系统是优先选择的。
- 缺点:master需要额外的负载。
配置 External Job Cache 或者 Master Job Cache
第一步:理解salt返回机制
在你配置其中一种Job Cache之前,你有必要了解salt的returner模块,returners是salt的可配置的模块,它接收jobs执行信息,并进行必要的操作将数据发送到外部系统。例如returner会建立连接,认证,然后格式化并上传数据。
salt的returners系统为 External Job Cache 和 Master Job Cache 提供核心功能,两个系统使用的是同样的returners。
salt目前提供多种不同的returners,让你可以方便的连接到各种外部系统中。这里 提供一个完整的returner列表。不同的returner配置不同,在使用前确保仔细阅读了连接中的内容。
第二步:配置returner
在了解了整体架构并准备好外部系统之后,现在看一下具体的配置:
External Job Cache:
returner的配置信息,可以写在minion的配置文件,pillar或者grains中。
如果在多个地方设置了external_job_cache
的 returner 配置文件,则按照下面的顺序检索,使用第一个被检索到的配置:
- minion配置文件
- minion’s grains
- minion’s pillars
Master Job Cache:
Master Job Cache 的 returner 配置信息应该在master的配置文件里面设置。
下面有两个配置文件的例子:
MySQL requires:
mysql.host: 'salt'
mysql.user: 'salt'
mysql.pass: 'salt'
mysql.db: 'salt'
mysql.port: 3306
Slack requires:
slack.channel: 'channel'
slack.api_key: 'key'
slack.from_name: 'name'
在配置了returner并将配置写到配置文件之后,可以启用 External Job Cache 或者 Master Job Cache。
第三步:启用
配置文件就一行,用户将job执行结果的数据通过之前配置好的returner发送到外部系统中。
External Job Cache:
通过将下面的配置加到 master 的配置文件中来启用 External Job Cache。
ext_job_cache: <returner>
例如:
ext_job_cache: mysql
注意: External Job Cache 的 returner 的配置文件是写在 minion 端的配置文件中的,而 External Job Cache 的配置文件是配置在master端的配置文件中的。
MASTER JOB CACHE
通过将下面的配置加到 master 的配置文件中来启用 MASTER JOB CACHE。
master_job_cache: <returner>
例如:
master_job_cache: mysql
确保此处的returner的配置是在master的配置文件中的,在更改配置文件之后,记得重启master端来确保配置生效。service salt-master restart