saltstack的二次开发

1.Grains的二次开发

在master上添加Grains,且同步给minion。注意:只能从master同步给minion,而不能从master通过syndic同步给minion。

在master的file_roots目录下建_grains,在_grains目录下写grains的py文件,用return返回就可以拉

复制代码
复制代码
 vim my_grains.py
def my_grains():
  '''
    My Custom Grains
  '''
  grains = { 'hehe1': 'haha1', 'hehe2': 'haha2' }
  return grains
复制代码
复制代码

然后在master主机执行同步grains命令

salt '*14' saltutil.sync_grains

此时在minion主机的/var/cache/salt/minion/extmods/grains/下可以看到master中同步过来的my_grains.py文件。

在master执行下面命令可以得到对应的grains值。

salt '*14' grains.item

2.模块的二次开发

 在3006版本以后,安装salt会自动给安装一个给salt使用的python不同于全局的python。这个python的目录为/opt/saltstack/salt/bin/python3,已安装的模块目录在/opt/saltstack/salt/lib/python3.10/site-packages/salt/modules/。

Site-Packages是指存放第三方库的目录。当我们使用pip或者其他工具安装Python库时,默认会将这些库安装到Python的site-packages目录下。site-packages目录位于Python安装目录下的lib子目录中。

编写的模块需要放在root_files下的_modules/下,与grains一样,只能在master给minion,不能master通过syndic给minion

vim /data/salt/sls/base/_modules/my_disk.py 
def list():
  cmd = 'df -h'
  ret = __salt__['cmd.run'](cmd)
  return ret

分发模块

salt '*' saltutil.sync_modules

此时在master可以执行这个模块

salt '*14' my_disk.list 

 3.salt web 

不能使用halite,启动报错:

No module named 'salt.client.api'  

其中salt.client.api.APIClient可以使用salt.client.LocalClient,但由于python版本问题,还有好些库的函数有问题,所以放弃使用halite

posted @   潇潇暮鱼鱼  阅读(19)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2023-03-21 golang 反射reflect
点击右上角即可分享
微信分享提示