自定义模块和grains
一、自定义模块
saltstack有很多模块,模块的源码文件是在salt项目的:salt/modules.py;
salt linux-node2-computer sys.doc 查看有哪些module
这里file_roots还是/srv/salt/base目录,自定义模块步骤如下:
#新建自定义模块的目录_modules和模块文件 [root@linux-node1 _modules]# pwd /srv/salt/base/_modules [root@linux-node1 _modules]# cat f1.py def charles(): return 'date' #将模块同步到指定客户端 salt '*' saltutil.sync_all #使用 [root@linux-node1 _modules]# salt '*' f1.charles linux-node2-computer: date linux-node1.oldboyedu.com: date
二、自定义grains
自定义grains也是使用脚本实现的,grains的源码文件是salt项目的salt/grains.py
自定义grains步骤如下:
#新建_grains目录,并创建grains文件 [root@linux-node1 base]# cd _grains/ [root@linux-node1 _grains]# ls file.py [root@linux-node1 _grains]# cat file.py import os def file(): grains={} file = os.popen('ulimit -n').read() grains['file']=file return grains #同步grains到客户端 salt '*' saltutil.sync_all #运行 root@linux-node1 _grains]# salt '*' grains.item file linux-node2-computer: ---------- file: 1024 linux-node1.oldboyedu.com: ---------- file: 8192
一个grains文件中可以定义多个grains item
[root@linux-node1 _grains]# vim g1.py def g_func(): grains = {} grains['charles'] = 'charles' grains['qq'] = 'QQ' return grains [root@linux-node1 _grains]# salt '*' grains.item charles linux-node2-computer: ---------- charles: 5 linux-node1.oldboyedu.com: ---------- charles: charles [root@linux-node1 _grains]# salt '*' grains.item qq linux-node2-computer: ---------- qq: QQ linux-node1.oldboyedu.com: ---------- qq: QQ