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)客户端通过…...

接口测试中缓存处理策略
在接口测试中,缓存处理策略是一个关键环节,直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性,避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明: 一、缓存处理的核…...

【WiFi帧结构】
文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成:MAC头部frame bodyFCS,其中MAC是固定格式的,frame body是可变长度。 MAC头部有frame control,duration,address1,address2,addre…...

练习(含atoi的模拟实现,自定义类型等练习)
一、结构体大小的计算及位段 (结构体大小计算及位段 详解请看:自定义类型:结构体进阶-CSDN博客) 1.在32位系统环境,编译选项为4字节对齐,那么sizeof(A)和sizeof(B)是多少? #pragma pack(4)st…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

【Zephyr 系列 10】实战项目:打造一个蓝牙传感器终端 + 网关系统(完整架构与全栈实现)
🧠关键词:Zephyr、BLE、终端、网关、广播、连接、传感器、数据采集、低功耗、系统集成 📌目标读者:希望基于 Zephyr 构建 BLE 系统架构、实现终端与网关协作、具备产品交付能力的开发者 📊篇幅字数:约 5200 字 ✨ 项目总览 在物联网实际项目中,**“终端 + 网关”**是…...

Linux 内存管理实战精讲:核心原理与面试常考点全解析
Linux 内存管理实战精讲:核心原理与面试常考点全解析 Linux 内核内存管理是系统设计中最复杂但也最核心的模块之一。它不仅支撑着虚拟内存机制、物理内存分配、进程隔离与资源复用,还直接决定系统运行的性能与稳定性。无论你是嵌入式开发者、内核调试工…...
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题
【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要: 近期,在使用较新版本的OpenSSH客户端连接老旧SSH服务器时,会遇到 "no matching key exchange method found", "n…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...