SaltStack

2024-05-27 23:36
文章标签 saltstack

本文主要是介绍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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1008915

相关文章

saltstack执行模块

(1)master中编写自定义模块 [root@server1 ~]# mkdir /srv/salt/_modules -p[root@server1 ~]# cd /srv/salt/_modules/[root@server1 _modules]# vim my_disk.py#!/use/bin/env pythondef df():return __salt__['cmd.ru

saltstack实现一键部署keepalived+haproxy的高可用负载均衡集群

配置环境 主机名ip服务server1172.25.1.1salt-master、salt-minion haproxy、keepalivedserver2172.25.1.2salt-minion , httpdserver3172.25.1.3salt-minion , nginxserver4172.25.1.4salt-minion , haproxy、keepalived 此文章

saltstack中grains和pillar的用法

SaltStack_Grains Grains 1.什么是grains:(静态数据,minion启动时采集) Grains Static bits of information that a minioncollects about the system when the minion first starts. The grains interface is made available t

saltstack Pillar

Pillar数据是与特定minion关联的,也就是说每一个minion都只能看到自己的数据,所以Pillar可以用来传递敏感数据 定义Pillar数据 master配置文件中定义 Pillar使用与State相似的SLS文件。Pillar文件放在master配置文件中pillar_roots定义的目录下 vim /etc/salt/master......pillar_roots

saltstack 扩展module

在master上创建/srv/salt/_modules/目录 添加扩展文件 vim /srv/salt/_modules/hello.py# -*- coding: utf-8 -*-def create(msg):return 'Command: "{0}" completed successfully!'.format(msg) 同步模块 salt '*' saltutil.sync

借助saltstack获取window最新一次的补丁更新时间

结果验证,如下命令可以实现。 salt 'TIBERX' cmd.run "wmic qfe list full" | grep "InstalledOn" | awk -F'=' '{print$2}' | awk -F'/' '{print$3,$1,$2}' | sort | awk 'END {print}'

Window的saltstack连接不稳定的问题解决

saltstack服务端IP调整后 重新安装了服务端。发现有部分Window的被控制端连接不稳定。 经过试验,解决方法如下: 1)重新启动Window客户端; 2)再服务端进入/etc/salt/pki/master/minions ,删除那条WINDOS客户端的认证文件; 3)重启服务端; 4)运行salt-key -a [WINDOW客户端名] 5)测试salt "*"

saltstack的api安装以及使用解释

首先,贴上官方地址:https://docs.saltstack.cn/ salt,一种全新的基础设施管理方式,部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快,服务器之间秒级通讯。 salt底层采用动态的连接总线, 使其可以用于编配, 远程执行, 配置管理等等. 一、什么是saltstack 什么是saltstack• Saltstack是基于python

Saltstack 最大打开文件数问题之奇怪的 8192

哈喽大家好,我是咸鱼。 今天分享一个在压测过程中遇到的问题,当时排查这个问题费了我们好大的劲,所以我觉得有必要写一篇文章来记录一下。 问题出现 周末在进行压测的时候,测试和开发的同事反映压测有问题,请求打到 A 服务上被拒绝了。 我们登录服务器查看 A 服务的日志,发现频繁地报 Too many open files 错误,可以看到压测的时候该进程要处理大量的 socket,导致打开的文件

通过 saltstack 批量更新 SSL 证书

哈喽大家好,我是咸鱼。 之前写过两篇关于 SSL 过期巡检脚本的文章: SSL 证书过期巡检脚本SSL 证书过期巡检脚本(Python 版) 这两篇文章都是讲如何通过脚本去自动检测 SSL 过期时间的,当我们发现某一域名的 SSL 证书过期之后,就要及时更换。 如果这个域名下有很多服务器,我们一台一台手动登录机器然后更新证书的话效率是非常低的,所以我们可以通过一些自动化运维工具去完成这些大