点击架构师成长之路

架构师成长之路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>

......

架构师成长之路5.2-Saltstack远程执行的更多相关文章

  1. 架构师成长之路3.1-Cobber原理及部署

    点击返回架构师成长之路 架构师成长之路3.1-Cobber原理及部署 Cobbler是一个Linux服务器安装的服务,可以通过网络启动(PXE)的方式来快速安装.重装物理服务器和虚拟机,同时还可以管理 ...

  2. 架构师成长之路5.7-Saltstack数据系统

    点击架构师成长之路 架构师成长之路5.7-Saltstack数据系统 1. Saltstack的两种数据系统 Grains Pollars 2. Saltstack数据系统---Grains Grai ...

  3. 架构师成长之路5.6-Saltstack配置管理(jinja模板)

    点击架构师成长之路 架构师成长之路5.6-Saltstack配置管理(jinja模板) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FU ...

  4. 架构师成长之路5.5-Saltstack配置管理(状态间关系)

    点击架构师成长之路 架构师成长之路5.5-Saltstack配置管理(状态间关系) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要FUNC ...

  5. 架构师成长之路5.4-Saltstack配置管理(LAMP架构案例)

    点击架构师成长之路 架构师成长之路5.4-Saltstack配置管理(LAMP架构案例) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要F ...

  6. 架构师成长之路5.3-Saltstack配置管理(State状态模块)

    点击架构师成长之路 架构师成长之路5.3-Saltstack配置管理(State状态模块) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需要 ...

  7. 架构师成长之路5.1-Saltstack安装及入门

    点击架构师成长之路 架构师成长之路5.1-Saltstack安装及入门 (安装.配置.启动) 配置管理工具: Pupper:1. 采用ruby编程语言:2. 安装环境相对较复杂:3.不支持远程执行,需 ...

  8. 架构师成长之路7.1 CDN理论

    点击返回架构师成长之路 架构师成长之路7.1 CDN理论 CDN,Content Distribute Network,内容分发网络:CDN解决的是如何将数据快速可靠从源站传递到用户的问题.用户获取数 ...

  9. 架构师成长之路6.6 DNS服务器搭建(构建企业级DNS)

    点击返回架构师成长之路 架构师成长之路6.6 DNS服务器搭建(构建企业级DNS) 采用LVS-DR模式负载均衡,多IDC,多套DNS集群,通过master-slave技术保证dns配置的一致性. 1 ...

随机推荐

  1. Java多线程编程(三)线程间通信

    线程是操作系统中独立的个体,但这些个体如果不经过特殊的处理就不能成为一个整体.线程间的通信就是成为整体的必用方案之一,可以说,使线程间进行通信后,系统之间的交互性会更强大,在大大提高CPU利用率的同时 ...

  2. vue cli3.3 以上版本配置vue.config.js 及反向代理操作解决跨域操作

    const webpack = require('webpack') module.exports = { configureWebpack: { plugins: [ new webpack.Pro ...

  3. FRP代理及其在数据库安全上的实践

    1 代理 现如今的互联网世界里,代理服务已经十分常见,它通常作为一个第三方或者说中转站角色替代用户取得信息或者服务. 根据代理对象的不同,代理服务可以分为正向代理和反向代理. 1.1 正向代理 我们通 ...

  4. 一文让你彻底了解大数据实时计算引擎 Flink

    前言 在上一篇文章 你公司到底需不需要引入实时计算引擎? 中我讲解了日常中常见的实时需求,然后分析了这些需求的实现方式,接着对比了实时计算和离线计算.随着这些年大数据的飞速发展,也出现了不少计算的框架 ...

  5. 爬虫基本库的使用---requests库

    使用requests---实现Cookies.登录验证.代理设置等操作 处理网页验证和Cookies时,需要写Opener和Handler来处理,为了更方便地实现这些操作,就有了更强大的库reques ...

  6. 第三十四章 POSIX消息队列

    POSIX消息队列相关函数 mq_open 功能: 用来创建和访问一个消息队列 原型: mqd_t mq_open(const char *name, int oflag); //只能用来打开消息队列 ...

  7. [Spark]Spark-streaming通过Receiver方式实时消费Kafka流程(Yarn-cluster)

    1.启动zookeeper 2.启动kafka服务(broker) [root@master kafka_2.11-0.10.2.1]# ./bin/kafka-server-start.sh con ...

  8. C++ 11新标准实现POJ No.1002-487-3279

    487-3279(重复的电话号码查询)(标签:优先队列,哈希表) 题目描述 企业喜欢用容易被记住的电话号码.让电话号码容易被记住的一个办法是将它写成一个容易记住的单词或者短语.例如,你需要给滑铁卢大学 ...

  9. 使用 element-ui 级联插件遇到的坑

    需求描述[省市区三级联动] 组件:Cascader 级联选择器 后端需要所选中的地区的名字,如:['北京市', '北京市', '东城区'] 获取后端省市区具体列表的接口返回数据: // 省 - 参数1 ...

  10. 130道ASP.NET面试题(二)

    71.什么是反射?答:动态获取程序集信息 72.用Singleton如何写设计模式答:static属性里面new ,构造函数private 73.什么是Application Pool?答:Web应用 ...