SaltStack

news2024/9/26 3:19:50

SaltStack
官方文档
1.简介

作用:
		批量处理
		状态管理(配置管理)
		事件驱动(通过事件触发操作)
		管理私有云/公有云
yum仓库:
		http://repo.saltstack.com	

安装
	1.master和minion
		rpm --import https://repo.saltproject.io/py3/redhat/7/x86_64/3004/SALTSTACK-GPG-KEY.pub
		curl -fsSL https://repo.saltproject.io/py3/redhat/7/x86_64/3004.repo | sudo tee /etc/yum.repos.d/salt.repo
	2.master
		yum -y install salt-master salt-api salt-master
		systemctl start salt-master
	3.minion
		yum -y install salt-minion
		vim /etc/salt/minion
			master:
				  - 192.168.0.12
			id: 192.168.0.13
		systemctl start salt-minion
	4.master 认证:
		salt-key
		salt-key -A
		salt-key
	
配置文件:yaml 语言格式
  /etc/salt/minion:
	master: IP 		指定	master	
	示例:
		  master:
			- salt-master.haier.net
			- salt.haier.net
	id: 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_name
	  salt ‘minion'  sys.doc module_name.function_name
	  或者采用  -d 代替 sys.doc
  2、查看state模块的使用方法
	  salt  ‘minion’  sys.state_doc   state_module_name
   	  salt  '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_modules
	 sys.list_state_functions
	 sys.state_argspec
	 sys.state_doc

  network.
    active tcp 返回所有tcp连接
 	arp 返回所有arp记录
	connect  测试与minion是否连通      
	  例:salt '192.168.150.62' network.connect baidu.com 80
	default_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.sh
    salt '*' 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 sshd
    get_all	获取所有正在运行的服务
    reload/start/stop/status/restart
    
  cron.
    list_tab   查看指定用户的计划任务
      例:salt '*' cron.list_tab root
    rm_job 删除指定用户的计划任务
      例:salt '*' cron.rm_job root /usr/local/weekly
    set_job 设置指定用户的计划任务
      例: salt '*' cron.set_job root '*' '*' '*' '*' 1 /usr/local/weekly

  pkg.
    install   #安装软件包
    remove	#删除指定软件包
    upgrade	#更新软件包
    version	#查询软件包版本
  


  cp. (或salt-cp)
    get_file:#下载文件到客户端
	  	  例:
	  	    salt ‘*’ cp.get_file salt://vimrc /etc/vimrc
			salt ‘*’ 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 
    grep
    mkdir 
    sed
    move #移动一个文件或目录。
    remove #删除文件。注意:该模块一次只能接受一个参数。
    stats #返回包含指定文件状态的词典。
  
  status.
    cpuinfo
    netstats
    uptime
    vmstats

  state.
    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.sls
  base: 
    '*': 
      - web.apache
  远程执行:(命令行中的*表示通知所有 top.sls中的*表示实际需要操作的机器有哪些)
    salt '*' state.highstate
      test=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/grains
      test-grains: linux-nod2

  
Pillar(可加密),在master上设置
  vim /etc/salt/master
    minion_pillar_cache: False  设置内置采集是否开启
    pillar_roots:	设置路径
  例:(不需要重启)
    vim /srv/pillar/base/apache.sls

在这里插入图片描述

  设置谁能执行(必须有)
    vim/srv/pillar/base/top.sls 
      base
        '*': 
          -apache
          
  执行 :
    salt '*' pillar.items

  pillar在状态文件里怎样引用

在这里插入图片描述

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: 开源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1705739.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

政府鼓励社会力量建设气膜体育场馆—轻空间

2023年12月1日&#xff0c;国家体育安全总局发布的《关于政协第十四届全国委员会第一次会议第00374号&#xff08;文体宣传类020号&#xff09;提案答复的函》中指出&#xff0c;2016年和2020年国务院发布的文件中均涉及推动气膜场馆建设及完善装配式建筑相关政策。下一步&…

Git学习篇

目录 使用命令导入项目 使用命令导入项目 1. 使用git init 命令初始化一个新的Git仓库。 git init 是 Git 命令&#xff0c;用于初始化一个新的 Git 仓库。当您想要开始跟踪一个新项目的版本控制时&#xff0c;可以运行 git init 命令来初始化一个空的 Git 仓库。 如果出现以下…

项目文件上传宝塔后只有一个文件内容不同且没有报错该如解决?

一、遇到此类问题不要慌先检查文件是否上传正确&#xff1b; 二、检查文件是否可以在浏览器中正常运行&#xff1b; 三、检查文件是否存在某些不明显的报错&#xff1b; 四、检查此页面的是否存在代码错误&#xff1b; 五、标签链接是否错误&#xff1b; 我所遇到的错误是…

白酒:不同产地白酒的风格特点与比较

云仓酒庄豪迈白酒&#xff0c;作为中国白酒的一部分&#xff0c;其风格特点深受产区的影响。不同产地的白酒&#xff0c;由于自然环境、酿造工艺等因素的差异&#xff0c;形成了各自与众不同的风味和特点。下面让云仓酒庄豪迈白酒来比较一下不同产地白酒的风格特点。 首先&…

使用Python操作Jenkins

大家好&#xff0c;Python作为一种简洁、灵活且功能丰富的编程语言&#xff0c;可以与各种API轻松集成&#xff0c;Jenkins的API也不例外。借助于Python中的python-jenkins模块&#xff0c;我们可以轻松地编写脚本来连接到Jenkins服务器&#xff0c;并执行各种操作&#xff0c;…

香橙派 AIpro开发板开箱测评(代码开源)

前言&#xff1a;有幸能够收到一块梦寐以求的 AI 边缘计算开发板 OrangePi AIpro&#xff0c;非常感谢官方大大给予的宝贵机会。OrangePi AIpro是香橙派官方跟华为昇腾合作的新一代边缘计算产品&#xff0c;其使用华为昇腾 AI 技术路线&#xff0c;搭配集成图像处理器&#xff…

odoo17 hooks使用

odoo17 hooks函数&#xff1a; 1、pre_init_hook 安装引擎开始前执行的函数 2、post_init_hook 安装引擎开始后执行的函数 3、uninstall_hook 卸载执行的函数 以pre_init_hook为例&#xff1a; 1)hooks.py 定义函数&#xff1a; 2&#xff09;init.py引用定义的函数 3)manifest…

RabbitMQ不完整的笔记

同步的不足 1、拓展性差&#xff0c;当要添加功能时&#xff0c;需要在原来的功能代码上做修改&#xff0c;高耦合。 2、性能下降&#xff0c;调用者需要等待服务提供者执行完返回结果后&#xff0c;才能继续向下执行 3、级联失败&#xff0c;由于我们是基于OpenFeign调用交易…

江协科技STM32学习-0 购买套件

前言&#xff1a; 本文是根据哔哩哔哩网站上“江协科技STM32”视频的学习笔记&#xff0c;在这里会记录下江协科技STM32开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了江协科技STM32教学视频和链接中的内容。 引用&#xff1a; STM32入门教程-2023版 细致讲…

芋道源码 / yudao-cloud:前端技术架构探索与实践

摘要&#xff1a; 随着企业信息化建设的深入&#xff0c;后台管理系统在企业运营中扮演着至关重要的角色。本文将以芋道源码的yudao-cloud项目为例&#xff0c;深入探讨其前端技术架构的设计思路、关键技术与实现细节&#xff0c;并分享在开发过程中遇到的挑战与解决方案。 一、…

《Python编程从入门到实践》day34

# 昨日知识点回顾 json文件提取数据、绘制图表渐变色显示 # 今日知识点学习 第17章 17.1 使用Web API Web API作为网站的一部分&#xff0c;用于与使用具体URL请求特定信息的程序交互&#xff0c;这种请求称为API调用。 17.1.1 Git 和 GitHub Git&#xff1a;分布式版本控制系…

Java语言ADR药物不良反应系统源码Java+IntelliJ+IDEA+MySQL一款先进的药物警戒系统

Java语言ADR药物不良反应系统源码JavaIntelliJIDEAMySQL一款先进的药物警戒系统源码 ADR药物不良反应监测系统是一个综合性的监测平台&#xff0c;旨在收集、报告、分析和评价药品在使用过程中可能出现的不良反应&#xff0c;以确保药品的安全性和有效性。 以下是对该系统的详细…

【职业教育培训机构小程序】教培机构“招生+教学”有效解决方案

教培机构“招生教学”有效解决方案在数字化转型的浪潮中&#xff0c;职业教育培训机构面临着提升教学效率、拓宽招生渠道、增强学员互动等多重挑战。小程序作为一种新兴的移动应用平台&#xff0c;为解决这些痛点提供了有效途径。 一、职业教育培训机构小程序的核心功能 &…

当传统文化遇上数字化,等级保护测评的必要性

第二十届中国&#xff08;深圳&#xff09;国际文化产业博览交易会5月23日在深圳开幕。本届文博会以创办20年为契机&#xff0c;加大创新力度&#xff0c;加快转型升级&#xff0c;着力提升国际化、市场化、专业化和数字化水平&#xff0c;不断强化交易功能&#xff0c;打造富有…

[数据集][目标检测]RSNA肺炎检测数据集VOC+YOLO格式6012张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;6012 标注数量(xml文件个数)&#xff1a;6012 标注数量(txt文件个数)&#xff1a;6012 标注…

[集群聊天服务器]----(十一) 使用Redis实现发布订阅功能

接着上文&#xff0c;[集群聊天服务器]----(十)Nginx的tcp负载均衡配置–附带截图&#xff0c;我们配置nginx&#xff0c;使用了多台服务端来提高单机的并发量&#xff0c;接下来我们回到项目中&#xff0c;思考一下&#xff0c;各个服务端之间怎么进行通信呢&#xff1f; 配置…

专业145+总410+成电电子科技大学858信号与系统考研经验电子信息与通信工程,抗干扰,空天,资环,真题,大纲,参考书。

今年考研总分410,专业课858信号与系统145&#xff0c;顺利上岸成电&#xff0c;毕设已经搞得七七八八&#xff0c;就等毕业了&#xff0c;抽空整理回顾一下去年的复习&#xff0c;给群里的同学提供一些参加&#xff0c;少走弯路&#xff0c;对于整体复习的把握有个大概得规划。…

Unity 之 Android 【获取设备的序列号 (Serial Number)/Android_ID】功能的简单封装

Unity 之 Android 【获取设备的序列号 (Serial Number)/Android_ID】功能的简单封装 目录 Unity 之 Android 【获取设备的序列号 (Serial Number)/Android_ID】功能的简单封装 一、简单介绍 二、获取设备的序列号 (Serial Number) 实现原理 1、Android 2、 Unity 三、注意…

notepad++ 模糊替换规则

AUTO_INCREMENT\d AUTO_INCREMENT0 ALTER TABLE .* AUTO_INCREMENT0;

计算机网络——在地址栏输入网址(URL)之后都发生了什么

网址&#xff0c;也叫域名&#xff0c;域名就像一个 IP 地址的可读版本&#xff0c;比如&#xff0c;百度的域名 www.baidu.com&#xff0c;他的 ip 是 110.242.68.3&#xff0c;输入 IP 一样可以跳转到百度搜索的页面&#xff0c;我想没有一个人没去记百度的 IP 吧。其实我们真…