saltstack服务器集群管理平台

1,简介

1)SaltStack 本身是基于 Python 语言开发实现,结合了轻量级的消息队列软件 ZeroMQ 与 Python 第三方模块(Pyzmq、PyCrypto、Pyjinjia2、python-msgpack 和 PyYAML 等)构建。
image.png

2)一个基于 C/S 架构,服务器集群管理的解决方案。管理端称为 Master,客户端称为 Minion,具备配置管理、远程执行、监控等功能,minion 负责接收服务器端发布的指令并执行,同时负责客户端的状态监控。。
3)4505消息发布端口(所有minion在4505上保持established),salt客户端和服务端通信使用4506端口,内容传输使用消息队列。
4)salt 有很多可执行模块,cmd模块,cp模块等。

2,salt环境搭建

1)安装python2.7以及piphttp://www.jianshu.com/p/f7be0d432538
2)rpm --import https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
vim /etc/yum.repos.d/saltstack.repo
[saltstack-repo]
name=SaltStack repo for RHEL/CentOS 6
baseurl=https://repo.saltstack.com/yum/redhat/6/x86_64/latest
enabled=1
gpgcheck=1
gpgkey=https://repo.saltstack.com/yum/redhat/6/x86_64/latest/SALTSTACK-GPG-KEY.pub
master
yum install salt-master -y
yum install salt-ssh -y
chkconfig salt-master on
slave
yum install salt-minion -y
chkconfig salt-minion on
3)配置文件
master组件的配置文件
/etc/salt/master
minion组件的配置文件
/etc/salt/minion

image.png

service salt-master start
service salt-minon restart
4)部署发布目录
salt的部署发布目录在/srv/salt下
mkdir -p /srv/salt
5)安装遇到问题。
No module named yum--->vim /usr/bin/yum #!/usr/bin/python2.6
The master key has changed, the salt master could have been subverted
-->master上salt-key -d id,minion上rm -rf /etc/salt/pki/minion/minion_master.pub,service salt-minion restart
6)其他。
salt-master启动时可以指定-c参数,指定配置路径;
7)salt --versions 查看salt的版本。

3,master-minion之间认证过程。

1)minion端生成一个秘钥对(/etc/salt/pki/minion下minion.pem,minion.pub),并产生一个ID值,minion服务会安装ID值命名的公钥发送给 master ,直到接受为止;
2)master认证完毕后,会将minion 端发送来的,以ID值命名的公钥存放在在/etc/salt/pki/master/minions下。

3)master认证完毕后,会将自身的公钥发送给 minion,并存储为 /etc/salt/pki/minion/minion_master.pub.
image.png
image.png

4,salt操作。

1)salt-key 密钥管理,通常在master端执行
salt-key [options]
salt-key -L ##查看所有minion-key
salt-key -a <key-name> ##接受某个minion-key
salt-key -d <key-name> ##删除某个minion-key
salt-key -A ##接受所有的minion-key
salt-key -D ##删除所有的minion-key

image.png

2)salt-run 在master执行runner
salt-run [options] [runner.func]
salt-run manage.status ##查看所有minion状态
salt-run manage.down ##查看所有没在线minion
salt-run manged.up ##查看所有在线minion
image.png

3)salt可以让minion执行命令.
执行模块命令。通过cmd.run模块执行shell命令。cmd.script方式:可以向远程主机执行脚本。
salt -C 'web-01' test.ping 模块命令。测试minion存活状态,-C多参数
salt 'web-01' cmd.run '/etc/init.d/redis_6392 stop'
salt 'web-01' cmd.run '/etc/init.d/mysqld restart' //无日志输出,需要修改启动脚本
image.png

salt 'web-01' cmd.run 'tail -400 /var/log/mysqld.log'
salt '*' cmd.script salt://temp.sh salt:// == /srv/salt(salt的默认发布目录)
4)salt命令salt '<target>' <function> [argument]
function是salt带的或自己写的可执行模块里面的function,target指定命令或者模块应用到哪些minion上
globbing通配符 salt 'aliyun-*' test.ping
正则表达式 salt -E 'web-(0001 | 0003)' test.ping
list列表 salt -L 'web-0001,web-0002' test.ping
1个或者多个参数 salt -C 'web-0001, web-0002, xx' test.ping
salp执行cmd的cp命令。salt 'web-01' cmd.run 'cp /home/zhanqi/a.cnf /home/zhanqi/temp/a.cnfbk'
image.png
image.png

5)salt执行cp模块salt-cp 分发文件到minion上,不支持目录分发。
salt-cp 'l-qa*' a.cnf /home/zhanqi/a.cnf
image.png

image.png

6)salt执行自定义脚本。
salt:// 是指 /srv/salt(salt的默认发布目录)
image.png

image.png

5,YMAL(Yet Another Markup Language

1)可读性高,表达数据序列的编程语言,ymal以数据为设计语言的重点,xml以标记为重点。
2)规则
缩进:使用固定的层次表示缩进,不能使用tab,saltstack中要求两个空格。
冒号:冒号后一个空格。
短横线:后面加一个空格,表示列表。
3)示例
对象:name: hzq
数组:["h","z","q"]
- h
- z
- q
对象数组复合结构
names:
   -   hzq
   -   hahaha
   -   bob
字符串:字符串默认不使用引号表示。

6,SLS文件。

1)saltstack使用ymal语言将sls文件,即SaLt State文件 / 配置管理文件(SLS描述了系统的目标状态,由格式简单的数据构成。)解释成它自己识别的内容,jinja是基于python的模板引擎,sls文件可以使用jinja模板来做一些操作。
2)在使用sls之前,需要先指定环境配置的根目录。master的/etc/salt/master文件中。

image.png
image.png
image.png

3) /srv/salt/top.sls
top.sls 是配置管理的入口文件
base标签开始解析,下一级是操作的目标 : 正则,分组,或者grain模块;再下一级是要执行的state文件(无扩展名)
image.png
子state文件webserver.sls
image.png

4)单个sls执行
salt '*' state.sls webserver
salt '*' state.apply webserver
highstate执行
salt '*' state.highstate top
5)sls命名空间。
webserver.sls简称webserver
webserver/dev.sls可写作webserver.dev
webserver/init.sls可写作webserver(webserver.sls比init.sls优先级高)

7,Jinja模板

1)salt包含jinja2模板引擎,可以用在sls文件,pillar文件和其他被salt管理的文件中。可以使用Jinja去访问million的configuration values,pillar data,call Salt execution modules。
2)Pillar可以用来存储类似于用户名和密码等数据,或者任何其它类型的数据,此数据可以在states中访问。

8,使用returner将salt执行返回的信息存起来

salt '*' cmd.run '/etc/init.d/duobeiyund status' --out=json --out-indent=-1
salt '*' saltutil.sync_returners
returner里面咱们定义的文件或者数据库都是相对于minion来说。(redis等模块需要在minion上安装)
salt '*' cmd.run 'locale' 查看机器编码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,302评论 5 470
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,232评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,337评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,977评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,920评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,194评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,638评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,319评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,455评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,379评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,426评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,106评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,696评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,786评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,996评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,467评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,043评论 2 341

推荐阅读更多精彩内容