• saltstack编写自定义模块


    一、salt远程执行的底层原理

    Salt的底层通信是通过ZeroMQ完成的,采用了ZeroMQ的订阅发布模式(Pub和Sub),如下图所示。

    简单来讲,Pub/Sub模式类似于广播电台,在订阅发布模式中Pub将消息发送到总线,所有的Sub收到来自总线的消息后,根据自己的订阅条件来接收特定的消息。对应到Salt中就是master将事件发布到消息总线,minion订阅并监听事件,然后minion会查看事件是否 ,通过正则匹配的各种方法去匹配minion。下面简要说明下Saltmaster和minion的通信过程, Salt master启动时会监听两个端口,默认是4505和4506。

    4506的作用: Salt Master Ret接口,支持认证(auth)、文件服务、结果收集等功能;   
    4505的作用:Salt Master pub接口,提供远程执行命令发送功能。
    

    Salt minion启动时从配置文件中获取master的地址,如果为域名,则进行解析。解析完成后,会连接master的4506(Ret接口)进行key认证。认证通过,会获取到master的publish_port(默认是4505),然后连接publish_port订阅来自master pub接口的任务。当master下发操作指令时,所有的minion都能接收到,然后minion会检查本机是否匹配。如果匹配,则执行。执行完毕后,把结果发送到master的4506(Ret接口)由master进行处理,命令发送通信完全是异步的,并且命令包很小。此外,这些命令包通过maqpack进行序列化后数据会进一步压缩(Maqpack是一种高效的二进制序列化格式),所以Salt的网络负载非常低。

    二、编写自定义模块

    编写一个自定义的测试模块 hello.py。默认情况下,我们的定制化模块存放于/srv/salt/_modules/文件夹下,这个文件夹并不是默认创建的,需要手动创建。

    [root@29-server ~]# mkdir -pv /srv/salt/_modules/
    [root@29-server ~]# cd /srv/salt/_modules/
    
    [root@29-server _modules]# cat hello.py
    def world():
        """
    	It is my first function.
    	Example:
    		salt '*' hello.world
    	"""
    	return "hello world!"
    

    模块添加完毕后,我们需要把模块推送到所有minion上。

    [root@29-server _modules]# salt "*" saltutil.sync_modules
    minion-one:
        - modules.hello
    

    返回结果是minion接收到的新模块名。由于每个minion都接收了我们的新模块,所以全部返回了- modules.hello。

    [root@29-server _modules]# salt "*" hello.world
    minion-one:
        hello world!
    

    查看模块帮助信息

    [root@29-server _modules]# salt "minion-one" sys.doc hello
    hello.world:
    
    	It is my first function.
    	Example:
    		salt '*' hello.world
    

    三、交叉调用salt自带的模块函数

    1.__salt__
    2.__grains__
    3.__pillar__
    4.__virtual__

  • 相关阅读:
    NTFS的交换数据流ADS应用
    解决binwalk运行提示缺少LZMA模块
    蓝牙扫描工具btscanner修复暴力扫描模式
    iOS 11开发教程(二十)iOS11应用视图美化按钮之设置按钮的状态
    Visual Studio 2017 版本 15.5.5
    iOS 11开发教程(十九)iOS11应用视图美化按钮之设置按钮的外观
    jquery的基本api
    vue知识点总结
    历史记录
    http加密原理
  • 原文地址:https://www.cnblogs.com/wangyajian/p/11590485.html
Copyright © 2020-2023  润新知