SaltStack自定义modules模块

SaltStack可以分为Master和Minion,自定义modules模块可以让你更加便捷的在两者之间进行信息收集和获取。

首先需要在master机器的file_roots 下建一个_modules文件夹,里面放.py 文件,也就是自定义模块。

  • 1.1:  file_roots 在/etc/salt/master 里可以设置,默认是/srv/salt/,即你需要在这个目录下新建文件夹_modules
    srv
    \-- salt
       \-- _modules
           \-- test.py
    

     

  • 1.2:  test.py

    def world():
        return 'hello world'

     

  • 1.3  在master使用salt "*" saltutil.sync_modules对_modules里面的文件同步到minion
  • 1.4  然后使用salt "*" test.hello,输出结果,记得test.py文件里面要加return,不然在master是无法显示接收到的信息。
  • ---------------------------------------------------------------------------------------------------------------------------------------------------------
  • 2.1  windows安装的minion默认路径存放在C:\salt
  •  

  • 2.2  同步之后的_modules模块存放在C:\salt\var\cache\salt\minion\extmods\modules
  •  

  • 2.3  如果在master写好Python文件之后进行推送测试未免太麻烦,可以在salt目录下,按住Shift键打开命令行,输入salt-call.bat   a(文件名).world(文件当中的模块名),进行快速测试PS:每一次测试完记得要将__pycache__文件夹删除,不然他会重新编译之前的文件,无法得到你想要的结果
  • 例子
  • 如果pillar取不到数据,很可能是你没有定义,或者忘了刷新pillar数据   salt  '*'  saltutil.refresh_pillar
  • ---------------------------------------------------------------------------------------------------------------------------------------------------------
  • 3.1  runner模块其实可以用salt-run来快速调用,首先在打开master的配置文件,vim /etc/salt/master,在里面加入如下代码,然后创建相应的文件夹。
  •  

  • 3.2  在 /srv/runner/ 文件夹当中可以编写你所需要的Python文件,如新建一个a.py文件
  • 这样一来便可以在任何目录输入这条指令,直接执行,只不过在编写比较复杂的程序时,需要注意导入模块的路径问题,最好使用os.path.abspath来获取文件的绝对路径,而不是使用os.getpwd,因为os.getcwd是会获取当前的工作目录,得到的是salt-run语句执行的目录,并不会到python文件的执行目录,这一点要特别注意 
  •  

posted @ 2018-08-20 18:26  089-袁佳鹏  阅读(2006)  评论(0编辑  收藏  举报