企业saltsatck学习(一) ------ 有关salt的知识了解
发布日期:2021-07-27 05:04:15
浏览次数:8
分类:技术文章
本文共 4656 字,大约阅读时间需要 15 分钟。
一、常见自动化运维
1、常见工具
Puppet:基于rubby开发,c/s架构,支持多平台,可管理配置文件、用户、cron任务、软件包、系统服务等。分为社区版和企业版,企业版支持图形化配置。 Saltstack:基于Python开发,c/s架构,支持多平台,比Puppet轻量,在远程执行命令时非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。 Ansible:更加简洁的自动化运维工具,不需要在客户端上安装客户端软件,基于Python开发的。可以实现批量操作系统配置、批量程序的部署、批量执行命令。 2.学习了解 Puppet:官网:www.puppetlabs.com ,基于rubby开发,C/S架构,支持多平台,可管理配置文件、用户、cron任务、软件包、系统服务等。 分为社区版(免费)和企业版(收费),企业版支持图形化配置。 Saltstack:官网:https://saltstack.com ,基于python开发,C/S架构,支持多平台,比puppet轻量,在远程执行命令是非常快捷,配置和使用比puppet容易,能实现puppet几乎所有的功能。 Ansible:官网:www.ansible.com ,更加简洁的自动化运维工具,不需要在客户端上安装agent,基于python开发,可以实现批量操作系统配置、批量程序的部署、批量运行命令。二、ansible与saltstack的比较
Saltstack | Ansible |
---|---|
SaltStack 依靠ZeroMQ速度快 | Ansible SSH传输速度慢一些 |
ZeroMQ本身不加密,AES加密,需注意MITM攻击 | SSH安全性高 |
Master需要守护进程 | 无额外开支,SSH即可 |
State语法需要学习 | playbook语法相对简单,容易学习 |
excution模块+state模块,state会调用excution模块 | Ansible模块+playbook |
使用topfile top.sls 使用YAML | playbook使用YAML |
围绕Master输入命令,首次连接使用加密key,使用ZeroMQ库不会拥堵,持续连接速度更快 | 使用SSH通道,无固定Master,更安全,也有MQ版本 |
未提及 | 配置记录文件,原始vs生产 |
默认本地root,客户端root | 支持多用户sudo操作 |
密码容易保管,命令容易审计 | SSH,公钥连接 |
配置模块化,学习成本更高 | 克隆Ansible Git,语法简单 |
三、saltstack
1、有关saltstack
Saltstack是基于Python开发的一套C/S架构,具备Puppet、Ansible功能于一身的配置管理工具,功能十分强大, 各模块融合度及复用性极高;使用号称世界上最快的消息队列ZeroMQ使得Saltstack能够秒级在数万台服务器上进行各种操作, 而且使用RAS Key方式确认身份,传输采用AES加密,安全性能更高; Saltstack不仅仅是一款配置管理工具,还是一款做云计算和数据中心架构编排利器。 目前Salt-cloud项目也已经合并到Saltstack主项目里,Saltstack已经支持Docker相关模块, 在友好地支持各大云平台之后,配合Saltstack的Mine实现各云平台业务自动扩展。 SaltStack是一种新型的基础设施管理软件,简单易部署,可伸缩的足以管理成千上万的服务器 和足够快的速度控制,与他们交流,以毫秒为单位 SaltStack提供了一个动态基础设施通信总线用于编排,远程执行、配置管理等等 SaltStack项目于2011年启动,年增长速度较快,五年期固定基础设施编制和配置管理的开源项目 SaltStack社区致力于保持slat项目集中、友好、健康、开放 简单来说它的两大基础功能就是:配置管理、远程命令执行 剩下就是根据你的需求自由组合,实现更复杂的功能和系统管理2.核心内容
1.使命令发送到远程系统是并行的而不是串行的 2.使用安全加密的协议 3.使用最小最快的网络载荷 4.提供简单的编程接口salt使用Python客户端接口
为了允许简单的扩展,Salt执行程序可以写为纯Python模块。
数据从Salt执行过程中收集到可以发送回master服务端,或者发送到任何任意程序。 Salt可以从一个简单的Python API调用,或者从命令行被调用,所以Salt可以用来执行一次性命令, 也可以作为一个更大的应用程序的一个组成部分。SaltStack作用于仆从和主拓扑。SaltStack与特定的命令结合使用可以在一个或多个下属执行。
实现这一点,此时Salt Master可以发出命令,如salt ‘*’ cmd.run ‘ls -l /’。 除了运行远程命令,SaltStack允许管理员使用“grain”。 grain可以在SaltStack仆从运行远程查询,因此收集仆从的状态信息并允许管理员在一个中央位置存储信息。 SaltStack也可以帮助管理员定义目标系统上的期望状态。 这些状态在应用时会用到.sls文件,其中包含了如何在系统上获得所需的状态非常具体的要求。 由于它提供了在管理远程系统的灵活性,SaltStack-based产品迅速获得利益。 该功能可以对比由状态管理系统提供的功能,如Puppet和Ansible。 SaltStack很大程度上得益于快速的采用率,它包括一个在管理系统上运行远程命令的有效方式。3、saltstack的端口
master端:4505 minion端:4506 saltstack的master端监听4505与4506端口。 4505为salt的消息发布系统,4506为salt客户端与服务端通信的端口; salt客户端程序不监听端口,客户端启动后,会主动连接master端注册,然后一直保持该TCP连接, master通过这条TCP连接对客户端控制,如果连接断开,master对客户端就无能为力了。 当然,客户端若检查到断开后会定期的一直连接master端的。 4.SaltStack的组件(1)SaltStack Master
中央管理系统\服务端,这个系统是用来发送命令和配置到SaltStack Minion上运行。(2)SaltStack Minion
接受受管理系统\客户端,该系统接收来自SaltStack Master命令和配置。(3)执行模块过程
特别对一个或多个命令从命令行执行受管理系统。 适用于:实时监控、状态和库存;一次性命令和脚本;部署关键更新4)规则(States)
声明或命令式表示一个系统的配置 (5)Grains 系统变量, Grains是静态信息基础管理系统,包括操作系统、内存和许多其他的系统属性,您还可以定义定制的Grains为任何系统(6)Pillar
用户定义的变量,这些安全变量定义和存储在Salt Master,然后“分配”到一个或多个下属,Pillar数据存储值,文件路径,配置参数,和密码。(8)Top File
数据匹配公式(8)Runners
模块执行SaltStack Master执行支持任务,Runners报告的工作状态、连接状态读取数据从外部api,查询连接Salt Minions,和更多。 例如,安排Runners在许多系统之间协调配置部署。(9)Returners
SaltStack Minion返回的数据发送到另一个系统,如数据库,Returners可以运行在Salt Minion或Salt Minion。(10)Reactor
SaltStack环境中触发事件发生时的反应。(11)Salt Cloud / Salt Virt
云提供商提供系统/管理程序并立即把他们管理下。(12)SaltStack SSH
SaltStack使用ssh运行命令,在没有Salt Minion的情况下。5.salt的yaml语法规则
YAML是“YAML不是一种标记语言”的外语缩写 但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。 它是一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读, 容易和脚本语言交互,用来表达资料序列的编程语言。 前面学ansible的时候playbook文件使用的是yaml语法,其实这都是因为它是用python写的 saltstack也是用python写的,也要使用yaml语言 所以使用的yaml语法,那么我们就来具体了解一下yaml默认的SLS文件的renderer是YAML renderer。YAML是一个有很多强大
特性的标记性语言。Salt使用了一个YAML的小型子集,映射非常常用的 数据结构,像列表和字典。YAML renderer的工作是将YAML数据格式的 结构编译成为Python数据结构给Salt使用。 尽管YAML语法可能第一眼看上去很简洁但令人畏惧,但是只要记住三个 非常简单的规则就可以使用YAML语法写SLS文件了。规则:
(1)规则一:缩进 YAML使用一个固定的缩进风格表示数据层结构关系。Salt需要每个缩进级别 由两个空格组成。不要使用tabs。如果要使用tabls的话建议修改.vimrc,设置tab的缩进格数 (2)规则二:冒号 Python的字典当然理所当然是简单的键值对。其他语言的用户应该知道这个数据类型叫哈希表或者关联数组。 字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。Values的表现形式冒号下面的每一行,用一个空格隔开: my_key: my_value 在Python中,上面的将映射为: {‘my_key’: ‘my_value’} 另一种选择,一个value可以通过缩进与key联接。 my_key:my_value 注解: 上面的语法是有效的YAML,但是在SLS文件罕见,因为通常情况下,一个key的value不是单一的,而是一个 列表 的values。 在Python中,上面的将映射为:{‘my_key’: ‘my_value’} 字典可以被嵌套: first_level_dict_key:second_level_dict_key: value_in_second_level_dict 在Python中: { ‘first_level_dict_key’: { ‘second_level_dict_key’: ‘value_in_second_level_dict’ } } (3)规则三:短横杠 想要表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别作为同一列表的一部分。- list_value_one- list_value_two- list_value_three
列表可以可以作为一个键值对的value。这个在Salt很常见:
my_dictionary:- list_value_one- list_value_two- list_value_three
在Python中,上面的将映射为:
{'my_dictionary': ['list_value_one', 'list_value_two', 'list_value_three']}
转载地址:https://blog.csdn.net/qq_45425035/article/details/103251997 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2024年09月22日 09时46分49秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Find Peak Element
2019-06-06
PHP文件上传
2019-06-06
Mybatis - plus 配置与运用
2019-06-06
学习到的关于Delphi的接口
2019-06-06
支付宝获取私钥和公钥
2019-06-06
C# 将Excel里面的数据填充到DataSet中
2019-06-06
sencha touch 入门系列 (二)sencha touch 开发准备
2019-06-06
开放环境中的全自动【汽车自动驾驶系统】
2019-06-06
Ftp实现文件同步
2019-06-06
URAL题解一
2019-06-06
[安卓] 14、安卓HTTP——POST和GET用法分析
2019-06-06
Trie模版
2019-06-06
Ubuntu 14.10 下DokuWiki安装
2019-06-06
table
2019-06-06
求101~200之间素数的个数并将其打印
2019-06-06
C++通过jsoncpp类库读写JSON文件-json用法详解
2019-06-06
博弈论
2019-06-06