salt提供了一个接口,用于在master端定义数据,然后可以在minion中使用。这个接口就是pillar,获取的数据就是pillar数据。pillar的数据定义方式跟state sls文件方式类似,默认都是使用jinja_yaml格式。pillar与grains最大的不同点就是pillar是动态加载的,数据是随时变化的,它能根据不同的信息显示不同的数据,特定的minion只能看到特定的数据,因此能用于存储敏感数据,比如密码,这个数据定义方式使用的最多,操作简单。

    首先定义下pillar的根路径和top.sls文件,如下图。

pillar学习_renderers

pillar学习_grains_02


top.sls在/opt/app/salt/pillar目录下。

pillar学习_grains_03

pillar学习_salt_04

pillar学习_salt_05


结果显示,数据定义了,直接获取就行了,这个操作很简单,基本不耗资源。

很简单,是吗?好,来点需求,我想获取master端的时间咋办!!!

很简单的,在pillar里可以调用执行模块cmd.run来获取,如图。

pillar学习_renderers_06


获取到了时间,但是我想要的格式是YYYYmmddHHMMSS,怎么办啊!

要知道jinja_yaml有时候不够灵活,可以换种方式,采用其他的renderers。这里采用py方式。

pillar学习_renderers_07

当当当,是不是很灵活啊!只要你对salt够熟悉,你想做什么就做什么,当然不能干愚蠢的事情啊!!

这里说下,使用py renderer时,函数名必须是run,至于为什么,源码里有说明的。


待续。。。