如何使用salt states快速进行系统配置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用salt states快速进行系统配置相关的知识,希望对你有一定的参考价值。

参考技术A 如何使用salt states快速的配置一个系统。
本文将指导完成使用salt来配置一个minion运行apache http服务器并且使这个服务正确的运行。
在往下面进行之前,请确保你的salt已经安装并且已经工作。
Setting up the salt sate tree
states以文本文件的形式存储在master上,并且按照需求通过master的文件服务器传输给minions。state文件的集合构成了state tree
在使用salt时必须为其至少设置一个所谓的中央系统也就是state tree的第一个顶级点。编辑master的配置文件将以下行取消注释:

1
2
3

file_roots:
base:
- /srv/salt

Note:如果你在部署FreeBSD的操作系统,这个 file_roots参数默认值为:/usr/local/etc/salt/states
重启salt master使这个配置改变生效:

1
2

pkill salt-master
salt-master -d

Preparing the top file
在master上,上一步中的目录并没有被创建,(默认/srv/salt),创建一个名为top.sls文件,并添加一下内容:

1
2
3

base:
'*':
- webserver

这个top.sls文件是用来分隔环境的。默认环境是base,在base的环境集合定义了对minions的匹配,可以使用简单的*来指定所有的主机。
目标minions
salt可以通过glob、pcre正则表达式,或者通过grains来进行匹配任何的目标机器,例如:

1
2
3
4

base:
'os:Fedora':
- match: grain
- webserver

Create an sls module
在top.sls相同的目录下,创建一个名为webserver.sls的空文件,内容如下:

1
2
3

apache: # ID的声明
pkg: # state类型的声明
- installed # state中的函数声明

第一行,是对全局ID的声明,可以是任意的标识符,在这种情况下,使用需要被安装的软件包的包名来定义。
Note:对于apache httpd web服务器的包名取决于操作系统的发行版,例如,在Fedora是httpd,但在Debian/Ubuntu是apache2
第二行,是对state的声明,定义了我们所要十一on个的salt states,在这个例子中,我们使用pkg state以确保一个给定的包被正确安装。
第三行,称为函数的声明,这个函数被定义在pkg state这个模块中。
Renderers渲染器
states的sls文件可以写成很多格式,salt只依赖于很简单的数据结构,并且不关心这些数据结构的建立,模版语言和DSLs到处都有,每个人都喜欢。
建立数据结构可以很简单的编写预期的任务,在本文中我们在jinja2的模版中使用YAML,这也是默认的格式。可以在master配置文件中修改默认渲染器
Install the package
接下来运行我们创建的state,在master上打开一个终端并且运行一下命令:

1

% salt '*' state.highstate

master将会指导所有的目标minions运行 state.highstate。当minion执行highstate,它将会下载top文件中匹配的内容,minion将表达式中匹配的内容下载、编译、执行。
一旦完成,minion将返回所有的动作执行结果和所有更改

1
2
3
4
5
6
7
8

SLS File Namespace(sls文件名称空间)
这个例子中,这个webserver.sls文件可以简单的写作webserver。这个sls文件名称空间遵循一些简单的规则:
1. 这个.sls可以被省略,例如webserver.sls可以被称谓webserver
2. 子目录可以更好的组织.
a. 每个子目录都代表一个点
b. webserver/dev.sls可以写作webserver.dev
3. 在子目录的存在一个名为init.sls文件,所以webserver/init.sls也可以简写为webserver
4. 如果webserver.sls和webserver/init.sls同时存在,那么webserver/init.sls将会被忽略,并且webserver.sls将会被成为webserver

Troubleshooting Salt
如果输出的内容不是你所预期的,以下的建议可以帮助你缩小问题。
启用日志记录
当你启用日志的debug模式,salt输出的信息将会很全

1

salt-minion -l debug

前台运行minion
不使用daemon模式(-d)启动minion,可以从输出看到其工作的任何细节

1

salt-minion &

增加salt运行的默认超时时间,例如,修改默认超时时间为60s:

1

salt -t 60

为了更好的达到这三个效果:

1
2

salt-minion -l debug & # 在minion上运行
salt '*' state.highstate -t 60 # 在master上运行

参考文档:http://docs.saltstack.com/topics/tutorials/states_pt1.html

小技巧-使用notepad++实时编辑salt配置文件

需求

在使用salt调试服务器初期,会进行大量的实验,这个就需要快速的对salt的state进行编辑更改,而且linux的vi中显然不合适,最好是需要清晰的文档目录结构。

这样在编辑时可以更快的切换各个目录

寻觅

本人以前做配置变更会用到MobaXterm Personal Edition的sftp模块,比较好用,缺点就是没有目录结构

最后瞄准了notepad++ ,发现可以实现

开工

打开notepad++:

1、插件-NPPFTP-Show FTP Window,然后在右侧能看到一个FTP的窗口

2Settings-Profile Setting-Add new,自己取个名字,然后保存填写这个profile的配置信息,如HostNameUserNamePassword

3Connect-选择你的profile即可

展示

技术分享

结果

可以通过目录轻松定位各个sls文件,进行实时编辑

以上是关于如何使用salt states快速进行系统配置的主要内容,如果未能解决你的问题,请参考以下文章

小技巧-使用notepad++实时编辑salt配置文件

saltstack/salt的state.sls的使用

利用Saltstack的States初始化系统

saltstack/salt的state.sls和pillar定义以及使用

搭建Saltstack运维工具 񾑾

搭建Saltstack运维工具 -- 2019-08-11 19:24:07