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)客户端通过…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例
文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...
2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...
Psychopy音频的使用
Psychopy音频的使用 本文主要解决以下问题: 指定音频引擎与设备;播放音频文件 本文所使用的环境: Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...
关于 WASM:1. WASM 基础原理
一、WASM 简介 1.1 WebAssembly 是什么? WebAssembly(WASM) 是一种能在现代浏览器中高效运行的二进制指令格式,它不是传统的编程语言,而是一种 低级字节码格式,可由高级语言(如 C、C、Rust&am…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
