七天学会 SALT STACK 自动化运维 (1)

  • 简单理解 SALTSTACK
  • 安装与配置
  • 基本的使用方法
  • 结束语
  • 引用资源

简单理解 SALT STACK

笔者是初次接触 自动化运维 这一技术领域,也是初次接触SALT STACK这一自动化运维工具, 所以这里的 简单理解 SALTSTACK 之意为 笔者的简单理解,可以看做是作者的学习笔记,文中较多记述笔者在配置安装过程中遇到的问题,可能会有纰漏以及错误的地方,具体的新手指南,最好是参见这里.

SALTSTACK是一款自动化运维软件,使用python编写,使用ZEROMQ用作通信协议,主要功能包括命令批量执行,服务器环境批量配置,配置文件托管,服务器状态监控,配合强大的 Grains&Pillar 和自定义SLS配置文件,可以实现复杂功能,笔者会从最简单的场景开始着手学习并且记录配置过程, 简单使用过后,笔者的观点是,即使只是使用 SALTSTACK 管理单台vps,也比SSH要好用一些,稍后会说到原因。同类产品有 PuppetChef,因为没有使用过所以无法进行比较.


安装与配置

这里有详细的安装指南,因为该产品的更新迭代速度很快,所以不建议大家去看他人的中文教程,今天笔者安装的是pypi上的最新稳定版本,和网上的大部分中文教程的安装方法有所出入,所以笔者认为最好的方法就是直接参考官方的安装指南。

笔者使用ubuntu桌面版系统,安装指南建议的安装方式是添加SALTSTACK的软件源,使用apt进行安装,可以自动处理依赖,但是笔者无法链接到该源,所以采用了最直接的python setup.py install的安装方法. 根据安装指南,需要安装 salt-master, salt-minion, salt-syndic 与ZeroMQ.

安装:

在Pypi上下载 tarball, 解压之后创建虚拟环境并且执行安装脚本,笔者使用的是python 2.7.9, 直接执行一下命令安装相关依赖和saltstack本身.

python setup.py install
pip install -r _requirements.txt
pip install -r pip install -r zeromq-requirements.txt

在安装的过程中可能会遇到一个swig的bug:

AttributeError: 'module' object has no attribute 'PKCS5_SALT_LEN'

由于Pyzmq引用了 M2crypto这个包,而这个包需要使用swig,我安装的swig版本是3.0.5,当你的swig是3.0.5的时候便会报上面的错误,详细的Issue参见这里, 不过这个帖子也是重新编译了3.0.4版本的swig从而跳过这个错误的。

重新编译swig 3.0.4版本之后,安装完毕.

配置

在安装指南中,默认的配置文件位置是

/etc/salt/master
/etc/salt/minion

但是在我安装完毕 saltstack之后并没有这2个配置文件,但是使用如下命令

sudo salt-master -d
sudo salt-minion -l debug -d

服务也是可以成功开启,所以我的安装是没有问题的,但是文档中并没有说明在通过PIP手动编译安装的情况下需要手动复制配置文件,

跳过这个坑的方法就是执行如下命令:

sudo cp ./conf/* /etc/salt/ #如果没有相关目录就手动建立目录

然后编辑

sudo vi /etc/salt/minion

# master: salt

把第16行 master: salt 前的注释去掉,然后把salt换成master节点的IP地址就可以了,由于笔者使用的是单机,所以把salt换成 0.0.0.0即可.

minion授权

在我们的配置文件修改完毕,服务也正常启动之后, 还需要给minion服务器做授权,关于权限一节会在后面深入研究,只有经过授权的minion才可以接受master节点的控制,最基本的授权操作也是非常简单的,毕竟SALTSTACK是以简单使用而著称的.

sudo salt-key -L
# 打印出所有授权或未授权的minion节点
sudo salt-key -A
# 授权所有节点
sudo salt-key -a name
# 授权name节点

授权完成之后,我们就可以通过master节点进行进行对minion节点的控制了.


基本的使用方法

和最经常使用的ssh做对比,那就是执行命令的功能了,最简单的一条命令,参见如下代码

salt -e 'youngershen.com' cmd.run 'ifconfig'
# 或者
salt '*' cmd.run 'ifconfig'
# 或者
salt 'webserver*' cmd.run 'service apache restart'
salt 'webserver*' cmd.run 'sudo nginx -s reload'
# 对于这类命令,多台服务器切换起来真的是非常方便

关于 服务器通配符和SLS配置文件的编写,这里先不说,不过我已经觉得SALTSTACK非常了不起了,配置文件管理非常整洁(Yaml),一条命令批量更新,对各种服务的机器筛选有强大的正则支持.即使是对单节点VPS的命令管理来说,不用打密码的salt确实比ssh方便的多,而且你可能有很多VPS要管理,这样就不需要来回切换了,而且有通配符支持,所以文章开头的时候笔者就说即使是管理单节点

VPS,相对于SSH来说SALT还是很有优势的,不足之处就是配置方面,如果出门在外的话,还是需要SSH密码直接登陆的.

然后是稍微复杂一点的例子.

更改 master 配置文件

file_roots:
base:
- /srv/salt

注意格式是yaml,小心缩进哦!

然后执行:

sudo pkill salt-master
sudo salt-master -d

增加新的SLS配置文件

# /srv/salt/ 目录下 top.sls
base:
'*':
- testconfig #/srv/salt/ 目录下 testconfig.sls myconfig:
file.managed:
- name: /etc/config.cnf
- source: salt://config.cnf
xchat:
pkg.installed:
- watch:
-file :myconfig

由于配置文件的信息量略大,所以只按照我的理解来简单说明,用以增强自己的理解之用, SLS文件全部采用yaml格式,语法是必须小心的,master中的 file_roots 的值,实际上就是salt文件服务器的路径值,在minion像master请求文件的时候,读取的就是这个路径的下的文件,base下的 * ,是说这个testconfig的配置可以用于任何minion节点,通配符就是体现在这里的,可以任意配置,而testconfig.sls文件中,定义了两个符号,一个是myconfig,一个是xchat,myconfig是一个随意的配置文件,xchat是一个聊天程序,意思是说当xchat被installed函数检测为安装完成状态的时候,在每次执行命令时就watch myconfig对应的文件,也就是可以达到配置文件更新的效果,见如下命令

sudo salt '*' state.highstate
# 执行完毕之后会发现 /etc目录下多了一个文件名为 config.cnf的文件,而且更新该文件之后,再
# 执行命令,该文件也会更新

结束语

而关于众多的function和配置的编写规则,只能在以后讨论了,不过我已经大致了解了如何编写SLS,配合grains,使salt即能管理配置文件,又可以进行服务器监控,grains的值也可以随意编写函数来处理监控信息.

(本文完)


引用资源

中文用户组知识库: http://www.saltstack.cn/projects/cssug-kb/wiki/Dive-into-saltstack

官方文档: http://docs.saltstack.com/en/latest/

七天学会 SALT STACK 自动化运维 (1)的更多相关文章

  1. 七天学会SALTSTACK自动化运维 (3)

    七天学会SALTSTACK自动化运维 (3) 导读 SLS TOP.SLS MINION选择器 SLS文件的编译 总结 参考链接 导读 SLS SLS (aka SaLt State file) 是 ...

  2. 七天学会SALTSTACK自动化运维 (2)

    七天学会SALTSTACK自动化运维 (2) 导读 Grains Pillar 总结 参考链接 导读 上一篇主要介绍了安装和基本的使用方法,但是我认为如果理解了相关概念的话,使用会更加顺手,因为毕竟每 ...

  3. Linux centosVMware 自动化运维认识自动化运维、启动salt相关服务、saltstack配置认证、salt-key命令用法、saltstack远程执行命令、saltstack - grains、saltstack – pillar

    一.认识自动化运维 传统运维效率低,大多工作人为完成 传统运维工作繁琐,容易出错 传统运维每日重复做相同的事情 传统运维没有标准化流程 传统运维的脚本繁多,不能方便管理 自动化运维就是要解决上面所有问 ...

  4. 【实战小项目】python开发自动化运维工具--批量操作主机

    有很多开源自动化运维工具都很好用如ansible/salt stack等,完全不用重复造轮子.只不过,很多运维同学学习Python之后,苦于没小项目训练.本篇就演示用Python写一个批量操作主机的工 ...

  5. 自动化运维之Saltstack

    第三十八课 自动化运维之Saltstack 目录 一.自动化运维介绍 二. saltstack安装 三. 启动saltstack服务 四. saltstack配置认证 五. saltstack远程执行 ...

  6. 自动化运维之cobbler安装centos7.3

    自动化运维之cobbler安装centos7.3 一.cobbler简介和服务 Cobbler是一款自动化操作系统安装的实现,与PXE安装系统的区别就是可以同时部署多个版本的系统,而PXE只能选择一种 ...

  7. linux自动化运维工具Ansible saltstack Puppet、Chef、Fabric之间的对比

    发现分布式是一个发展的趋势,无论是大型网站的负载均衡架构还是大数据框架部署,以及云存储计算系统搭建都离不开多台服务器的连续部署和环境搭建. 当我们的基础架构是分散式或者基于云的,并且我们经常需要处理在 ...

  8. 自动化运维:网站svn代码上线更新(flask+saltstack)

    阶段性总结:      跌跌撞撞的用了一周左右的时间做完了网站自动升级功能,中间遇到了很多的问题,也学到了很多,在此做一个总结.   1.整体架构: 后台:nginx+uwsgi  #nginx提供w ...

  9. Linux云自动化运维第四课

    Linux云自动化运维第四课 一.vim 1.vim光标移动 1)在命令模式下 :数字  ###移动到指定的行 G  ###文件最后一行 gg  ###文件第一行 2)在插入模式下 i  ###光标所 ...

随机推荐

  1. MySQL Workbench类型之MySQL客户端工具的下载、安装和使用

    本博文的主要内容有 .MySQL Workbench的下载 .MySQL Workbench的安装 .MySQL Workbench的使用 个人推荐,比较好的MySQL客户端工具 注意啊! 对于noi ...

  2. winform 播放声音方式 分类: WinForm 2014-07-25 14:16 194人阅读 评论(0) 收藏

    声音文件folder.wav放置在bin目录下debug下 1.通过API调用 [c-sharp] view plaincopy using System.Runtime.InteropService ...

  3. 单元测试时候使用[ClassInitialize]会该方法必须是静态的公共方法,不返回值并且应采用一个TestContext类型的参数报错的解决办法

    using Microsoft.VisualStudio.TestTools.UnitTesting; 如果该DLL应用的是 C:\Program Files\Microsoft Visual Stu ...

  4. Android关于ListView中item与控件抢夺焦点的那些事

    在开发中,listview可以说是我们使用最频繁的控件之一了,但是关于listview的各种问题也是很多.当我们使用自定义布局的Listview的时候,如果在item的布局文件里面存在Button或者 ...

  5. oracle 常用博客网址

    使用oradebug修改数据库scn – 提供专业ORACLE技术咨询和支持@Phone13429648788 - 惜分飞 Solaris上使用DTrace进行动态跟踪 老熊的三分地-Oracle及数 ...

  6. QT QXmlStreamWriter用法小结

    一 API介绍 writeStartDocument():写文档头,作用类似于创建一个xml文档,并在文档开头部分写入版本信息和编码信息,一般为: <?xml version="1.0 ...

  7. iOS-iPad开发之SplitViewController简单介绍

    iOS-iPad开发之SplitViewController简单介绍 SplitViewController图形化创建 SplitViewController可以并列显示两个view,适用于基于nav ...

  8. java中调用js脚本

    JDK1.6加入了对Script(JSR223)的支持.这是一个脚本框架,提供了让脚本语言来访问Java内部的方法.你可以在运行的时候找到脚本引擎,然后调用这个引擎去执行脚本.这个脚本API允许你为脚 ...

  9. fedora虚拟机中的vsftp服务配置

    最近在学习unix,但在使用ftp链接虚拟机时总是总是各种报错,查了很多资料,试了很多方法,都有一定的问题,最后也算是久病成医,这里给其他跟我一样小白提供一个比较好的解决方案希望能有所帮助. Fedo ...

  10. Vim键盘图与命令图解