saltstack-pillar去掉总入口写top.sls文件的限制,拆分top.sls为多个top
2017-10-27 11:26
288 查看
摘要: 并发批量的修改top.sls文件,造成写文件冲突,导致一部分的数据丢失,但目前使用文件存储pillar数据,为了减少代码的修改,使用脚本来替换top文件,为每个minion制定一个独立的“top”文件,达到拆分top.sls的目的。
Pillar是Salt用来分发全局变量到所有minions的一个接口。pillar只对匹配类型的minion有效。 这使它为特定的minion存储敏感数据非常有用.详细的介绍见官网。
1.配置启用pillar
Salt Master服务器维护了一个pillar_roots 设置 ,和在Salt 文件服务器上使用的file_roots结构对应。和Salt 文件服务器类似,master配置文件中的 pillar_roots 选项也是基于环境映射到目录。Pillar数据被映射到基于top文件匹配到的Minion上,top 文件是和state top文件一样的方式列出的。Salt pillar可以使用和标准的top 文件同样的匹配器类型。
主配置文件中的 pillar_roots 和 file_roots 的功能是相同的。
使用pillar必须存在top文件,同file一致,他是所有pillar使用的入口,salt根据top.sls文件的映射对应到每个minion。
/srv/pillar/top.sls
以上top文件的意思是,所有的minion都可使用/srv/pillar/comman.sls文件的内容
2.遇到的问题
每次有新的pillar数据就需要在/srv/pillar/top.sls中增加一个minion和pillar文件的映射,在高并发的情况,容易造成写冲突,导致数据丢失。
3.简化每次修改top文件的方法
参考saltstack应用之简化pillar配置步骤,每个minion所有的pillar数据都保存在一个文件中,若是存在相同的key的pillar数据,就不能并发的操作,所以想到给每个minion都指定一个"top"文件。
以下为修改配置步骤:
修改top.sls文件内容
在/srv/pillar/pillar/目录下创建以minion_id命名的"top"文件,内容的格式同/srv/salt/top.sls文件格式一致,如下以minion-deletedevweb02为例:
写pillar文件:
执行命令查看该minion的pillar数据
这样每次有新的pillar数据都可在/srv/pillar/pillar/minion_id文件中追加pillar文件的相对路径,这样既减少冲突也可并发的对同一个minion执行不同的命令。
Pillar是Salt用来分发全局变量到所有minions的一个接口。pillar只对匹配类型的minion有效。 这使它为特定的minion存储敏感数据非常有用.详细的介绍见官网。
1.配置启用pillar
Salt Master服务器维护了一个pillar_roots 设置 ,和在Salt 文件服务器上使用的file_roots结构对应。和Salt 文件服务器类似,master配置文件中的 pillar_roots 选项也是基于环境映射到目录。Pillar数据被映射到基于top文件匹配到的Minion上,top 文件是和state top文件一样的方式列出的。Salt pillar可以使用和标准的top 文件同样的匹配器类型。
主配置文件中的 pillar_roots 和 file_roots 的功能是相同的。
pillar_roots: base: - /srv/pillar
使用pillar必须存在top文件,同file一致,他是所有pillar使用的入口,salt根据top.sls文件的映射对应到每个minion。
/srv/pillar/top.sls
base: '*': - comman
以上top文件的意思是,所有的minion都可使用/srv/pillar/comman.sls文件的内容
2.遇到的问题
每次有新的pillar数据就需要在/srv/pillar/top.sls中增加一个minion和pillar文件的映射,在高并发的情况,容易造成写冲突,导致数据丢失。
3.简化每次修改top文件的方法
参考saltstack应用之简化pillar配置步骤,每个minion所有的pillar数据都保存在一个文件中,若是存在相同的key的pillar数据,就不能并发的操作,所以想到给每个minion都指定一个"top"文件。
以下为修改配置步骤:
修改top.sls文件内容
#!py #coding:utf-8 ''' 返回minion对应的pillar信息 ''' import yaml import os import salt.master as pub log = logging.getLogger(__name__) def run(): #注意必须是run()方法,top只认可run config={} id=__opts__['id'] #arg=__clear_load__['arg'][0] pillar_root=__opts__['pillar_roots']['base'][0] path='%s/pillar/%s'%(pillar_root,id) #path='%s/pillar/%s/%s'%(pillar_root,id,id) if os.path.isfile(path): s=open(path).read() config=yaml.load(s) log.info(config) return config
在/srv/pillar/pillar/目录下创建以minion_id命名的"top"文件,内容的格式同/srv/salt/top.sls文件格式一致,如下以minion-deletedevweb02为例:
vim deletedevweb02 base: 'deletedevweb02': - common - test.test_no_1
写pillar文件:
cat test_no_1.sls hello: my test
执行命令查看该minion的pillar数据
salt \deletedevweb02 pillar.item hello deletedevweb02: ---------- hello: my test
这样每次有新的pillar数据都可在/srv/pillar/pillar/minion_id文件中追加pillar文件的相对路径,这样既减少冲突也可并发的对同一个minion执行不同的命令。
相关文章推荐
- 数据由一个图层按照要素拆分多个文件或图层,俗称分解、扇出、拆分
- 【saltstack学习笔记之八】salt的sls文件
- 【saltstack学习笔记之十】使用sls安装nginx并管理nginx的配置文件
- 关于saltstack下 sls文件编写的一点收获
- Saltstack sls文件:批量替换指定文件
- 关于去掉linux打开文件数限制的方法
- PDF文件怎么拆分多个PDF文件
- 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
- 【saltstack学习笔记之八】salt的sls文件
- C#将一个excel工作表根据指定范围拆分为多个excel文件
- Saltstack sls文件:批量安装服务
- ecstore nginx下去掉index.php入口文件
- Saltstack sls文件:批量添加删除计划任务
- 去掉‘为帮助保护您的安全,internet explorer已经限制此文件显示可能访问您的计算机的活动内容’提示
- .java源文件中是否可以包括多个类(不是内部类)?有什么限制?
- 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
- 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
- saltstack的探索-改善管理用户的sls文件
- Java实例说明 一个java文件可以包含多个类(不是内部类),限制也很明显
- 如何将一个PDF文件页面进行的拆分为多个PDF文件