• saltstack



    自动化运维,可实现日常设备监控、主动发现问题、自动分析定位、基于标准化流程工具规范化处理、通过自动化运维操作工具处理修复等功能,最终实现监管治自动化运维。

    监控自动化
    数据采集自动化
    数据分析自动化
    日常巡检自动化
    设备配置比对自动化
    故障定位自动化
    故障处理自动化
    流程处理自动化
    日常备份自动化
    系统优化自动化
    大批量配置自动化
    自动化

    自动化运维工具

    image

    image

    saltstack


    •  SaltStack管理理工具允许管理理员对多个操作系统创建一个一致的管理理系统

    •  Saltstack最主要的两个功能是:配置管理与远程执行

    •  Saltstack不只是一个配置管理工具,还是一个云计算与数据中心架构编排的利器

    •  采用订阅者模式的分布式管理工具    管理节点【发命令】——>被管理节点 【去执行 返回结果】

    •  采用自定义协议zeromq 比SSH(一对一)速度更快

     

    image

    salt-master安装

    yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
    yum install salt-master
    yum install salt-syndic  #分布式代理
    yum install sal-cloud 也是基于openstack来做的,它可以支持多种云的使用。
     如:Aliyun、Azure、DigitalOcean、EC2、Google Compute Engine、HP Cloud OpenStack
    
    
    Salt-minion 安装
    yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm
    yum install salt-minion
    修改配置文件
    [root@master ~]# cat /etc/salt/master |head -5
    master: 192.168.10.42
    user: root
    
    
    [root@minion01 ~]# head -10 /etc/salt/minion
     master: 192.168.10.42
     user: root
     id: minion-01
    

    Salt原理


         SaltStack 采用C/S模式,server端就是salt的master,client端就是minion,minion与master之间通过ZeroMQ消息队列通信
         minion上线后先与master端联系,把自己的pub key发过去,这时master端通过salt-key -L命令就会看到minion的key,接受该minion-key后,也就是master与minion已经互信
         master可以发送任何指令让minion执行了,salt有很多可执行模块,比如说cmd模块,在安装minion的时候已经自带了。它们通常位于你的python库中,这些模块是
    python写成的文件,里面会有好多函数,如cmd.run,当我们执行salt"cmd.run uptime'的时候,master下发任务匹配到的minion上去,minion执行模块函数,并返回结果。
    关于zeroMQ
    master监听4505和4506端口:
    4505对应的是ZMQ的PUB system,用来发送消息;
    4506对应的是REP system是来接受消息的。

    image

    salt命令

    Salt-key


    salt-key -L  列列出来认大哥的

    salt-key -A  所有小弟都认

    salt-key -a  单个认

    salt-key -D  剔除所有小弟

    salt-key -d  删除某

    查看minion状态

    #查看minion的状态
    [root@master salt]# salt-run manage.status
     down:
     up:
         - minion-01
    
    #查看minion在线状态
    [root@master salt]# salt-run manage.up
    -  minion-01
    
    #查看minion不在线状态
    [root@master salt]# salt-run manage.down
    

    文件分发 salt-cp


    #salt-cp 分发文件到minion上,不支持目录分发,通常在master运行
    #考本单个文件
    [root@master salt]# salt-cp minion-01 /root/salt-repo-latest-2.el7.noarch.rpm /tmp
     minion-01:
         ----------
        /tmp/salt-repo-latest-2.el7.noarch.rpm:
             True
    
    #拷贝单个文件到minion的目标目录下并改名
    [root@master salt]# salt-cp minion-01 /root/anaconda-ks.cfg /tmp/abc
     minion-01:
         ----------
        /tmp/abc:
             True
    

    minion本地执行命令:salt-call

    #salt-call    minion本地执行命令,自己执可执行模块,不是通过master下发job
    [root@minion01 tmp]# salt-call test.ping
    local:
        True
    
    

    批量操作

    #执行单个salt命令 
    salt "*" test.ping
    *代表所有主机 test.ping 命令
    
    #执行一个linux命令 
    salt "*" cmd.run "whoami" 
    cmd.run 告诉客户端执⾏什么命令
    
    #执行一个脚本 
    salt "*" cmd.script "salt://脚本名" #/srv/salt 脚本路径 默认

    查看salt minion在执行什么操作

    [root@master ~]# salt-run jobs.active
     20181029231137078329:
         ----------
        Arguments:
            - yum -y update
         Function:
             cmd.run
         Returned:
         Running:
             |_
               ----------
              minion-01:
                   2651
         StartTime:
             2018, Oct 29 23:11:37.078329
         Target:
             minion-01
         Target-type:
             glob
         User:
             root


    查看正在运行的任务,找到jid

    [root@master ~]# salt 'minion-01' saltutil.running
    minion-01:
         |_
           ----------
          arg:
               - yum -y update
           fun:
               cmd.run
          jid:
               20181029231137078329
           pid:
               2651
           ret:
           tgt:
               minion-01
           tgt_type:
               glob
           user:
               root


    根据jid杀掉任务


    [root@master ~]# salt 'minion-01' saltutil.kill_job 20181029231137078329
    minion-01:
        Signal 9 sent to job 20181029231137078329 at pid 2651    #清除minion缓存
    [root@master ~]# salt '*' saltutil.clear_cache
    minion-01:
        True
    
  • 相关阅读:
    Scoop Windows 的命令行安装程序管理工具
    微信小程序:用 Promise 解决方案代替回调地狱。 修复 this._invokeMethod is not a function 的问题
    微信小程序 获取地理位置信息
    Vue 与 动态组件 import 的尝试
    exception: TypeError: Cannot read property '_modulesNamespaceMap' of undefined at getModuleByNamespac
    Vue 项目中断点没有跳转到指定源码的问题
    检查 chrome 插件是否存在
    vue-devtools 获取到 vuex store 和 Vue 实例的?
    HTML5的服务器EventSource(server-sent event)发送事件
    ps 渐进式图片的技巧(支持jpg,gif,png)
  • 原文地址:https://www.cnblogs.com/wenyule/p/10034170.html
Copyright © 2020-2023  润新知