SaltStack

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: 开源
  • 8
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值