• 架构师成长之路5.2-Saltstack远程执行


    点击架构师成长之路

    架构师成长之路5.2-Saltstack远程执行

    配置管理工具:

    • Pupper:1. 采用ruby编程语言;2. 安装环境相对较复杂;3.不支持远程执行,需要FUNC工具配置才可以
    • Ansible:1.采用python编程语言;2.被红帽收购;3.轻量级;4.基于模块工作的,本身没有批量部署的能力,真正批量部署的是ansible所运行的模块。
    • Saltstack:采用python编程语言,同时提供Rest API方便二次开发以及和其它平台进行集成(目前企业使用率最高)

    Saltstack最基本的三大功能:

    • Remote execution远程执行:同时在上百上千台机器批量执行命令
    • Configuration management配置管理:状态管理(一种状态描述,但是这种状态很难回滚)
    • Event-Driven infrastucture事件驱动基础设施:监听对象,状态变化产生事件捕捉事件自动编排,故障自愈
    • Salt cloud 云管理:几乎可以管理所有的公有云和私有云

    Saltstack四种运行方式:

    • local:一台本地自运行
    • Minion/Master: 就是C/S模式
    • Syndic 代理组件管理(可以理解成zabbix proxy模式)
    • Salt SSH: 不用安装agent,也能通过SSH收集信息

    1. Saltstack的远程执行概念

    远程执行是Saltstack的核心功能之一。主要使用Salt模块批量给选定的minion端执行相应的命令,并获得返回结果。

    举例1:如上文例子“判断Salt的minion是否存活?”

    salt:是saltstack自带的一个命令
    * :表示目标主机,这里表示所有目标主机
    test.ping:test是saltstack中的一个模块,ping则是这个模块下面的一个方法

    举例:2:saltstack使用cmd.run模块远程执行shell命令

    2.Salt命令的结构语法

    salt '<target>' <function> [arguments]
    

    目标主机target匹配方式:

    • 与minionID有关的采用,通配符、列表和正则;
    • 与minionID无关的采用,IP、复合、分组、Grains、Pillar

    远程执行常用模块(点击所有模块列表):

    • test 模块:用于测试
    • user模块:用于用户管理
    • cmd模块:用于执行任意shell命令
    • pkg模块:用于软件包管理
    • file模块:用于配置
    • service模块:用于服务管理

    3.Salt命令的目标主机target匹配方式

    3.1 通配符匹配

    [root@Saltstack01 /]# salt '*' test.ping
    [root@Saltstack01 /]# salt 'Saltstack02' test.ping
    [root@Saltstack01 /]# salt '*02' test.ping
    [root@Saltstack01 /]# salt 'Saltstack0[1|2]' test.ping
    [root@Saltstack01 /]# salt 'Saltstack0[!1|2]' test.ping
    [root@Saltstack01 /]# salt 'Saltstack0?' test.ping
    

    3.2 列表匹配

    [root@Saltstack01 /]# salt -L 'Saltstack01,Saltstack02' test.ping
    

    3.3 正则匹配 

    [root@Saltstack01 /]# salt -E '^Salt' test.ping
    [root@Saltstack01 /]# salt -E '^Salt.*2' test.ping

    3.4 IP匹配 

    [root@Saltstack01 /]# salt -S '172.18.20.227' test.ping
    [root@Saltstack01 /]# salt -S '172.18.20.0/24' test.ping 

    3.5 复合匹配 

    [root@Saltstack01 /]# salt -C 'G@os:Centos and S@172.18.20.227' test.ping
    

    3.6 分组匹配 

    [root@Saltstack01 /]# vim /etc/salt/master
    nodegroups:
      webserver: 'Saltstack01,Saltstack02'
      dbserver: 'Saltstack03'
    [root@Saltstack01 /]# systemctl restart salt-master
    [root@Saltstack01 /]# salt -N 'webserver' test.ping
    [root@Saltstack01 /]# salt -N 'dbserver' test.ping
    

    3.7 Grains匹配  

    [root@Saltstack01 /]# salt -G 'os:Centos' test.ping
    [root@Saltstack01 /]# salt -G 'localhost:Saltstack02' test.ping
    

    4.Salt命令的远程执行常用模块

    4.1 test模块 

    功能:用于测试。

    [root@Saltstack01 /]# salt '*' test.ping
    

    4.2 user模块 

    功能:详见官方

    salt '*' user.add name <uid> <gid> <groups> <home> <shell>
    

    4.3 cmd模块 

    功能:实现远程的命令行调用执行,可以使用shell所有命令(默认具备root操作权限,使用时需评估风险)

    4.4 pkg模块 

    功能:软件包状态管理,会根据操作系统不同,选择对应的安装方式(如CentOS系统默认使用yum,Debian系统默认使用apt-get)

    [root@Saltstack01 /]# salt '*' pkg.install "vsftpd"   #安装
    
    [root@Saltstack01 /]# salt '*' pkg.remove "vsftpd"  #卸载
    
    [root@Saltstack01 /]# salt '*' pkg.latest_version "vsftpd"  #安装最新版本
    
    [root@Saltstack01 /]# salt '*' pkg.upgrade "vsftpd"   #更新软件包
    
    [root@Saltstack01 /]# salt '*' pkg  #查看帮助手册
    

    表上表示已安装程序包。

    4.5 file模块   

    功能:被控主机常见的文件操作,包括文件读写、权限、查找、校验。

    #校验所有minion主机文件的加密信息,支持md5、sha1、sha224、shs256、sha384、sha512加密算法
    [root@Saltstack01 /]# salt '*' file.get_sum /etc/passwd md5
    
    #修改所有minion主机/etc/passwd文件的属组、用户权限、等价于chown root:root /etc/passwd
    [root@Saltstack01 /]]# salt '*' file.chown /etc/passwd root root
    
    #获取所有minion主机/etc/passwd的stats信息
    [root@Saltstack01 /]]# salt '*' file.stats /etc/passwd
    
    #获取所有minion主机/etc/passwd的权限mode,如755,644
    [root@Saltstack01 /]]# salt '*' file.get_mode /etc/passwd
    
    #修改所有minion主机/etc/passwd的权限mode为0644
    [root@Saltstack01 /]]# salt '*' file.set_mode /etc/passwd 0644
    
    #在所有minion主机创建/opt/test目录
    [root@Saltstack01 /]]# salt '*' file.mkdir /opt/test
    
    #在所有minion主机穿件/tmp/test.conf文件
    [root@Saltstack01 /]]# salt '*' file.touch /tmp/test.conf
    
    #将所有minion主机/tmp/test.conf文件追加内容'maxclient 100'
    [root@Saltstack01 /]]# salt '*' file.append /tmp/test.conf 'maxclient 100'
    
    #删除所有minion主机的/tmp/test.conf文件
    [root@Saltstack01 /]]# salt '*' file.remove /tmp/test.conf
    

    4.6 service模块   

    功能:被控主机程序包服务管理.

    #开启(enable)禁用(disable)
    salt '*' service.enable <service name>
    salt '*' service.disabled <service name>
    
    #reload、restart、start、stop、status操作
    salt '*' service.reload <service name>
    salt '*' service.restart <service name>
    salt '*' service.start <service name>
    salt '*' service.stop <service name>
    salt '*' service.status <service name>

    ......

  • 相关阅读:
    JAVA基础--线程
    Flutter: SliverAppBar 应用程序栏与滚动视图集成,以便它可以根据滚动偏移量在高度上变化
    Flutter: MediaQuery
    Dart: puppeteer库
    Flutter: 监听App显示,隐藏
    Dart: 解析html字符串
    Dart: 编码和解码各种存档和压缩格式
    Dart: 执行shell命令
    运行Chrome浏览器如何添加Options
    Flutter 删除AppBar的返回icon
  • 原文地址:https://www.cnblogs.com/yaoyaojcy/p/11970500.html
Copyright © 2020-2023  润新知