SaltStack
SaltStack
官方文档
1.简介
作用:批量处理状态管理(配置管理)事件驱动(通过事件触发操作)管理私有云/公有云
yum仓库:http://repo.saltstack.com 安装1.master和minionrpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/3004/SALTSTACK-GPG-KEY.pubcurl -fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/3004.repo | sudo tee /etc/yum.repos.d/salt.repo2.masteryum -y install salt-master salt-api salt-mastersystemctl start salt-master3.minionyum -y install salt-minionvim /etc/salt/minionmaster:- 192.168.0.12id: 192.168.0.13systemctl start salt-minion4.master 认证:salt-keysalt-key -Asalt-key配置文件:yaml 语言格式/etc/salt/minion:master: IP 指定 master 示例:master:- salt-master.haier.net- salt.haier.netid: name agent端的名字,默认为域名,一般为IP地址,启动后会记录在minion_id在这儿给/etc/salt/master:file_roots:设置编写的状态管理配置文件存放路径,可设置多个环境master与minion的认证:minion在第一次启动时会在/etc/salt/pki/minion/中生成一个公钥和私钥,并把公钥minion.pub发送到master的/etc/salt/pki/master/minions_pre/中并以minion的id命名master允许后会把公钥发送到minion的/etc/salt/pki/minion/中,并把自己目录下/etc/salt/pki/master/minions_pre/相关密钥移动到/etc/salt/pki/master/minions/中salt-key :查看密钥-a id 允许id 支持通配符-A 允许所有-d id 删除-D 删除所有示例:

通信:master:端口:4505:发送4506:接收zeromq:借助此工具进行通信功能:发布与订阅,实现并行通信请求与接收minion主动连接master,所以不需要提供或暴漏端口,随机端口帮助文档:1、查看普通模块和函数使用方法salt 'minion' sys.doc module_namesalt ‘minion' sys.doc module_name.function_name或者采用 -d 代替 sys.doc2、查看state模块的使用方法salt ‘minion’ sys.state_doc state_module_namesalt 'minion' sys.state_doc state_module_name.function_name常用模块:
salt
Usage: salt [options] '<target>' <function> [arguments]
options:-V -h-c #指定配置文件位置,默认/etc/salt-t #超时时间默认5s--args-stdin #读取额外的选项或参数,每个条目用换行符/分隔-p #显示进度条--failhard #在返回第一次 bad 时停止执行批量--async #异步,执行命令时不需要等待返回-v #详细信息 包括jid例:salt '*' cmd.run 'df -T' -v 可以输出包括jid的信息salt-run jobs.lookup_jid jid 可以查看相关jid的输出信息-b #BATCH, --batch=BATCH, --batch-size=BATCH 显示minion执行的数量或百分比-d #查看文档-l #设置输出的日志级别--log-file #设置日志路径--out-file #输出到指定文件目标选项-H #列出所有主机列表-E #正则表达式-L #后跟列表 用空格或逗号分隔-G #grain数据系统-P, --grain-pcre 使用正则匹配-N #用预定义组匹配-R #范围匹配-C #复合匹配,可以使用所有匹配模式-I, --pillar #pillar数据系统-J, --pillar-pcre -S 网段匹配function: 模块.函数test.ping 检测master与minion通信是否正常sys.argspec 返回Salt执行模块中函数的参数说明。doc 查看模块文档list_functions 列出所有指定模块的函数list_modules 列出所有模块查看配置管理。。。 与上相仿sys.list_state_modulessys.list_state_functionssys.state_argspecsys.state_docnetwork.active tcp 返回所有tcp连接arp 返回所有arp记录connect 测试与minion是否连通 例:salt '192.168.150.62' network.connect baidu.com 80default_route 查看默认路由dig 查看域名解析 cmd.run/shell-cmd #手动指定命令例:salt '*' cmd.run cmd='sed -e s/=/:/g'-cwd #执行命令当前目录位置-stdin #可以使用'stdin参数为要运行的命令指定一个标准输入字符串-runas #指定用户-group #指定组-shell #指定运行shell-python_shell #如果为False',则让python处理位置参数。设置为'True'使用shell特性,如管道或重定向。-bg #如果"True,在后台运行命令,不等待或交付它的结果-env #在执行之前设置的环境变量。-timeout 超时时间run_all #执行传递的命令并返回返回数据的字典run_bg #在后台执行传递的命令并返回它的PID run_stderr #执行命令并只返回标准错误 exec_code #传入两个字符串,第一个命名可执行语言,akapython2, python3, ruby, perl, lua,等等,第二个字符串包含您希望执行的代码。将返回标准输出。例:salt '*' cmd.exec_code ruby 'puts "cheese"' args='["arg1", "arg2"]' env='{"FOO": "bar"}'retcode #执行shell命令并返回命令的返回代码。script #从远程位置下载脚本并在本地执行该脚本。该脚本可以位于salt主文件服务器或HTTP/FTP服务器上。(支持多种语言) -source #要下载脚本的位置-args #传递给脚本的命令行参数的字符串。例:salt '*' cmd.script salt://scripts/runme.shsalt '*' cmd.script salt://scripts/runme.sh 'arg1 arg2 "arg 3"'salt '*' cmd.script salt://scripts/windows_task.ps1 args=' -Input c:\tmp\infile.txt' shell='powershell'salt '*' cmd.script salt://scripts/runme.sh stdin='one\ntwo\nthree\nfour\nfive\n' service.available 查看服务是否运行例:salt '*' service.available sshdget_all 获取所有正在运行的服务reload/start/stop/status/restartcron.list_tab 查看指定用户的计划任务例:salt '*' cron.list_tab rootrm_job 删除指定用户的计划任务例:salt '*' cron.rm_job root /usr/local/weeklyset_job 设置指定用户的计划任务例: salt '*' cron.set_job root '*' '*' '*' '*' 1 /usr/local/weeklypkg.install #安装软件包remove #删除指定软件包upgrade #更新软件包version #查询软件包版本cp. (或salt-cp)get_file:#下载文件到客户端例:salt ‘*’ cp.get_file salt://vimrc /etc/vimrcsalt ‘*’ cp.get_file “salt://`grains`.`os`/vimrc” /etc/vimrc template=jinja salt ‘*’ cp.get_file salt://vimrc /etc/vimrc gzip=5 #使用模板 #压缩:其中,1代表作小压缩,9代表最大压缩。salt ‘*’ cp.get_file salt://vimrc /etc/vim/vimrc makedirs=True 如果目录不在,则创建目录get_dir #从master下载整个目录get_url #从一个URL地址下载文件,URL可以是msater上的路径(salt://),也可以是http网址。file.access #测试salt进程是否有对指定文件的对应访问权限touch #如果文件不存在创建文件,相当于touch file,如果文件存在就更新访问时间或者修改时间append #追加文字到文件的末尾-args 具体追加内容可以放到这个键值对上例: salt '*' file.append /etc/motd args="['cheese=spam','spam=cheese']"chgrp #修改文件的属组。chown #修改文件的属主和属组。copy #从源目录拷贝文件到目标目录-recurse 拷贝目录-remove_existing 提前移除目标目录中的所有文件,然后再从源路径拷贝文件到目标find grepmkdir sedmove #移动一个文件或目录。remove #删除文件。注意:该模块一次只能接受一个参数。stats #返回包含指定文件状态的词典。status.cpuinfonetstatsuptimevmstatsstate.apply #应用在TOP中配置的所有状态
2.salt-ssh
需要先安装salt-ssh模块:yum -y install salt-ssh
记录IP地址的名册:/etc/salt/roster
远程执行:
第一次使用需要加-i 标识默认为yes
-r标识直接使用shell命令
salt-ssh '*' test.ping -i
salt-ssh '*' -r "uptime"
.
3.状态/配置管理文件:
配置路径 /etc/salt/master:file_roots:设置编写的状态管理配置文件存放路径,可设置多个环境默认路径为 /srv/salt/base例:vim /srv/salt/base/web/name.sls

远程执行:salt 'name' state.sls web.apache #调用state远程执行模块的sls方法 读取默认路径下web目录下的apache.sls 文件注:默认环境为base,如果要换到其他环境需要在后面加上这个方法的参数 saltenv=环境名字 定义每台服务器分别的状态:一般默认都是base环境
vim /srv/salt/base/top.sls示例:表示 所有机器都执行web/apache.sls这个状态文件vim /srv/salt/base/top.slsbase: '*': - web.apache远程执行:(命令行中的*表示通知所有 top.sls中的*表示实际需要操作的机器有哪些)salt '*' state.highstatetest=True 末尾加上此参数表示干跑一趟,并不实际执行
4.salt的数据系统
Grains(明文):负责采集salt-minion启动时的一些基本信息 ,明文,在minion设置grains.items 查询所有信息grains.get 参数 查询单个信息例: salt '*' grains.get saltversion用grains 来匹配minion:salt -G 'os:CentOS' cmd.run 'ip a' 通过grains匹配到所有centos系统上执行命令在top.sls 中匹配base'os:CentOS': -match: grain-web.apache模板匹配:

自定义grains:需要重启salt-minion生效 或执行 salt '*' saltutil.sync_grains 生效vim /etc/salt/grainstest-grains: linux-nod2Pillar(可加密),在master上设置vim /etc/salt/masterminion_pillar_cache: False 设置内置采集是否开启pillar_roots: 设置路径例:(不需要重启)vim /srv/pillar/base/apache.sls

设置谁能执行(必须有)vim/srv/pillar/base/top.sls base'*': -apache执行 :salt '*' pillar.itemspillar在状态文件里怎样引用

grains 与 pillar的对比

5.返回:salt支持salt-minion数据信息直接写入mysql等数据存储中,需在minion上安装对应插件和配置文件中指定存储位置和授权
需要末尾追加--return 例:salt '*' cmd.run 'df -hT' --return mysql 如要把所有缓存数据都写了mysql中:(这种不需要末尾加--return mysql)
minion的cache默认保存1天

6.配置管理几种写法
注意:配置管理文件中,每个id下的相同的模块只能用一次
示例:
多个id:

单个id

管理多个文件时,也可以不用声明name,可以把id作为name

微服务架构:
JSF:京东Spring Cloud: 开源
相关文章:
SaltStack
SaltStack 官方文档 1.简介 作用:批量处理状态管理(配置管理)事件驱动(通过事件触发操作)管理私有云/公有云 yum仓库:http://repo.saltstack.com 安装1.master和minionrpm --import https://repo.saltproj…...
【Rust日报】Rust 中的形式验证
文章 - 未来的愿景:Rust 中的形式验证 这篇文章回顾了形式化验证的基本概念,作者展示了如何使用 Hoare triples 来描述和推理程序的正确性,以及如何使用分离逻辑来解决验证的复杂性。文章还解释了为什么 Rust 适用于形式化验证,以…...
vue3项目中新增修改时使用nextTick时遇到的问题
前提 页面是个列表页,需要实现增删改查,新增和修改使用表单提交 关键代码如下 // html部分,新增、修改的表单 <el-dialogv-model"dialogVisible2":title"addTitle"width"600"class"update-shujuji-d…...
算法训练 | 二叉树Part7 | 530.二叉搜索树的最小绝对差、501.二叉搜索树中的众数
目录 530.二叉搜索树的最小绝对差 数组法 双指针法 ⭐ 迭代法 501.二叉搜索树中的众数 双指针法 迭代法 530.二叉搜索树的最小绝对差 题目链接:530. 二叉搜索树的最小绝对差 - 力扣(LeetCode) 文章讲解:代码随想录 数组…...
C++面向对象程序设计 - 标准输出流
在C中,标准输出流通常指的是与标准输出设备(通常是终端或控制台)相关联的流对象。这个流对象在C标准库中被定义为std::cout、std::err、std::clog,它们是std::ostream类的一个实例。 一、cout,cerr和clog流 ostream类…...
警惕Mallox勒索病毒的最新变种hmallox,您需要知道的预防和恢复方法。
引言 : 在数字化时代,数据已成为企业和个人最宝贵的资产之一。然而,随着技术的不断发展,网络威胁也日益猖獗,其中.hmallox勒索病毒以其独特的加密手段和狡猾的传播方式,成为了网络安全领域的一颗“隐形炸弹…...
2024年华为OD机试真题-火星文计算-C++-OD统一考试(C卷D卷)
题目描述: 已知火星人使用的运算符为#、$,其与地球人的等价公式如下: x#y = 4*x+3*y+2 x$y = 2*x+y+3 1、其中x、y是无符号整数 2、地球人公式按C语言规则计算 3、火星人公式中,#的优先级高于$,相同的运算符,按从左到右的顺序计算 现有一段火星人的字符串报文,请…...
3.00001 postgres如何初始化系统参数?
文章目录 加载参数整体流程参数结构举例:ConfigureNamesBool 初始化参数 InitializeGUCOptionsbuild_guc_variablesInitializeOneGUCOptionInitializeGUCOptionsFromEnvironment 命令行添加SelectConfigFiles配置 加载参数整体流程 我们先看下guc参数是如何管理的。…...
C# 读取 CSV 文件的方法汇总
文章目录 1. 使用System.IO命名空间中的类2. 处理标题行和指定列3. 使用CsvHelper库4. 高级功能和异常处理5. 使用 LINQ6. 总结 CSV(Comma-Separated Values,逗号分隔值)文件是一种简单的文本文件格式,用于存储表格数据。在C#中&a…...
element+ 引入图标报错 Failed to resolve import “@element-plus/icons-vue“ from “
element 引入图标报错 Internal server error: Failed to resolve import “element-plus/icons-vue” from “src\components\TimeLine.vue”. Does the file exist? 原因:element-plus需要单独引入 icons 文档 pnpm install element-plus/icons-vue之后就可以…...
Github 2024-05-25 开源项目日报 Top10
根据Github Trendings的统计,今日(2024-05-25统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目3TypeScript项目3非开发语言项目1HTML项目1Rust项目1Go项目1Jupyter Notebook项目1Java项目1Angular文档:交付Web应用程序的自信之选…...
VPN的详细理解
VPN(Virtual Private Network,虚拟私人网络)是一种在公共网络上建立加密通道的技术,通过这种技术可以使远程用户访问公司内部网络资源时,实现安全的连接和数据传输。以下是对VPN的详细介绍: 选择代理浏览器…...
java后端轮播图的设计
对于表示轮播图位置这种有限且较小范围的数据,一般可以使用整数类型来表示。考虑到位置序号一般是非负整数且数量较少,可以选择使用小范围的整数类型,如下: 整数类型: 对于Java中,可以考虑使用 int 类型来表示位置序号…...
upload-labs 21关解析
目录 一、代码审计 二、实践 三、总结 一、代码审计 $is_upload false; $msg null; if(!empty($_FILES[upload_file])){//检查MIME$allow_type array(image/jpeg,image/png,image/gif);if(!in_array($_FILES[upload_file][type],$allow_type)){$msg "禁止上传该类型…...
常用汇编指令
(arg)argument:自变量,变元 (reg)register:寄存器 (seg)segment:段寄存器 (mem)memory:存储器(内存单元&am…...
LabVIEW软件需求分析文档内容和编写指南
编写LabVIEW软件需求分析文档(Software Requirements Specification, SRS)是软件开发的关键步骤之一。以下是详细的内容结构、编写指南和注意事项: 内容结构 引言 项目背景:简要介绍项目背景和目的。 文档目的:说明需…...
spring cache(三)demo
目录 一、入门demo 1、pom 2、配置文件 3、config 4、controller 5、service 6、dao 7、dto与常量 8、测试: 8.1、无参 8.2、单参 (1)缓存与删除缓存 (2)删除缓存加入异常 二、自定义删除key 1、pom 2、…...
Android 应用开发语言选择对比
Android开发语言有多种,但是每种语言的各有不同的适用场景,对比介绍如下: 一.首选:原生应用Java,Kotlin 1.截至目前,大约有70%的Android开发者仍然使用Java语言进行开发,而30%的开发者则选择…...
Git 小白入门到进阶—(基本概念和常用命令)
一.了解 Git 基本概念和常用命令的作用 (理论) 基本概念 1、工作区 包含.git文件夹的目录,主要用存放开发的代码2、仓库 分为本地仓库和远程仓库,本地仓库是自己电脑上的git仓库(.git文件夹);远程仓库是在远程服务器上的git仓库git文件夹无需我们进行操…...
大数据框架总结(全)
☔️ 大数据框架总结(全) 关注“大数据领航员”,在公众号号中回复关键字【大数据面试资料】,即可可获取2024最新大数据面试资料的pdf文件 一. Hadoop HDFS读流程和写流程 HDFS写数据流程 (1)客户端通过…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
突破不可导策略的训练难题:零阶优化与强化学习的深度嵌合
强化学习(Reinforcement Learning, RL)是工业领域智能控制的重要方法。它的基本原理是将最优控制问题建模为马尔可夫决策过程,然后使用强化学习的Actor-Critic机制(中文译作“知行互动”机制),逐步迭代求解…...
三体问题详解
从物理学角度,三体问题之所以不稳定,是因为三个天体在万有引力作用下相互作用,形成一个非线性耦合系统。我们可以从牛顿经典力学出发,列出具体的运动方程,并说明为何这个系统本质上是混沌的,无法得到一般解…...
Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理
引言 Bitmap(位图)是Android应用内存占用的“头号杀手”。一张1080P(1920x1080)的图片以ARGB_8888格式加载时,内存占用高达8MB(192010804字节)。据统计,超过60%的应用OOM崩溃与Bitm…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
大数据学习(132)-HIve数据分析
🍋🍋大数据学习🍋🍋 🔥系列专栏: 👑哲学语录: 用力所能及,改变世界。 💖如果觉得博主的文章还不错的话,请点赞👍收藏⭐️留言Ǵ…...
深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏
一、引言 在深度学习中,我们训练出的神经网络往往非常庞大(比如像 ResNet、YOLOv8、Vision Transformer),虽然精度很高,但“太重”了,运行起来很慢,占用内存大,不适合部署到手机、摄…...
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南
在RK3588上搭建ROS1环境:创建节点与数据可视化实战指南 背景介绍完整操作步骤1. 创建Docker容器环境2. 验证GUI显示功能3. 安装ROS Noetic4. 配置环境变量5. 创建ROS节点(小球运动模拟)6. 配置RVIZ默认视图7. 创建启动脚本8. 运行可视化系统效果展示与交互技术解析ROS节点通…...
向量几何的二元性:叉乘模长与内积投影的深层联系
在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...
边缘计算网关提升水产养殖尾水处理的远程运维效率
一、项目背景 随着水产养殖行业的快速发展,养殖尾水的处理成为了一个亟待解决的环保问题。传统的尾水处理方式不仅效率低下,而且难以实现精准监控和管理。为了提升尾水处理的效果和效率,同时降低人力成本,某大型水产养殖企业决定…...
