背景:最近我在我们的服务器上发现了一个问题,那里的zookeeper不会从其中一个启动。 这是由myid文件是空的(它需要一个数字)造成的。 执行盐没有解决它。 事实certificate,这个问题是由最近一次主机名更改造成的。 我修正了sls文件,但任何这样的调整可能会导致它再次打破。
所以,我的问题是:我可以用盐来validation某些更改是否正确应用? 在这种情况下,我可以检查文件的大小或validation内容是否包含单个数字。 理想情况下,这将作为一个国家执行的一部分,但如果有另一种方式,我很乐意听到它。
具体来说,我并不是想自己validation或删除状态文件。 我只是想确保最终结果在一定程度上是有效的。 例如,该文件包含一个单一的数字,而不是空的。
为了配合Roald Nefs的回答 ,您可以使用module.run内的module.run在一个状态内执行一个模块。 所以,对于我的情况,我结束了这样做:
myid_file_test: module.run: name: file.search path: /path/to/myid pattern: '\d'
如果模式不匹配,那么它会报告失败,这正是我想要的。
使用salt.module.file模块,您将能够pipe理有关常规文件,目录和特殊文件的信息,设置/读取用户,组,模式和数据。
这个模块包含一个search()函数,它可以让你search文件中模式的出现。
salt '*' file.search /path/to/the/file pattern='='
该模式是一个正则expression式,用Python的search()来匹配。
您可以使用diskusage()函数recursion计算path的磁盘使用情况并以字节为单位返回:
salt '*' file.diskusage /path/to/the/file