当前位置: 首页 > 科技观察

Saltstack批处理文件和定时任务

时间:2023-03-11 20:58:21 科技观察

介绍Saltstack是thomasHatch创建的一个开源项目,最初是为了实现一个快速的远程执行系统而设计的。用于管理您的基础架构,您可以轻松管理数以千计的服务器。关于saltstack的更多功能本文不再介绍。本文主要演示使用saltstack管理服务器文件(如/etc/hosts、/etc/resolv.conf)和定时任务。使用场景在维护大量服务器时,一般在系统初始化上线后,我们希望所有服务器系统的一些配置文件是相同的。这时候我们就需要一个工具来对这些文件进行批量管理,保证配置文件的一致性,比如:/etc/resolv.conf这个文件。我们希望此文件始终保持一致。接下来,我们将使用saltstack来演示这个功能环境。需要自己安装salt-mastersalt-minion,使用test.ping模块查看master上的minion,如下图[root@saltmaster001salt]salt'qd01-stop-free002*'test.pingqd01-stop-free002:Trueconfiguremaster修改/etc/salt/master,添加如下file_roots:base:-/srv/saltpillar_roots:base:-/srv/pillarpillar_opts:Truewriteslsfile1、切换到/srv/salt目录下,我们创建sysinit目录,主要用于管理系统的一些配置文件2、cdsysinit,创建conf、scripts目录,创建sysinit.sls文件[root@saltmaster001syinit]#lltotal4drwxr-xr-x2rootroot191Dec3111:48confdrwxr-xr-x2rootroot198Dec1412:41scripts-rw-r--r--1rootroot3107Dec3111:49sysinit.sls说明:conf目录主要存放配置文件,比如hosts、resolv.conf等配置文件。scripts目录主要存放脚本文件,比如自己写的系统环境监控脚本check_server_env.sh3.写入sysinit.sls/opt/resolv.conf:file.managed:-source:salt://sysinit/conf/resolv.conf-user:root-group:root-mode:644-replaceTrue:True如上图,这里说明这里主要使用Salt的文件模块/opt/resolv.conf:表示配置文件所在目录bemanagedislocated(minionside)这里的意思是同步master的salt://sysinit/conf/resolv.conf到minion端的/opt/resolv.confsource:文件源路径user:theuserwhichthefilebelongsgroup:文件所属组mode:文件权限replaceTrue:强制文件与master一致4.在/srv/下创建top.slsbase:'*':-sysinit.sysinitsalt上面代码的意思是:sysinit目录下的sysinit.sls文件会被salt执行,目标是所有的配置文件和sls文件已经编写了minion端所需的es。接下来我们执行一下,看看效果。5.执行同步。我这里的minion只有一台服务器qd01-stop-free002。先看opt目录,现在没有resolv。.conf这个文件[root@qd01-stop-free002opt]#lltotal8drwxr-xr-x4rootroot4096Jul132017delldrwxr-xr-x10rootroot4096Mar262019gitlab手动同步[root@saltmaster001salt]#saltsys'qd01-stop-free002'state.inlysysinit.----------ID:/opt/resolv.confFunction:file.managedResult:TrueComment:File/opt/resolv.confupdatedStarted:15:31:17.355667Duration:52.986msChanges:---------diff:Newfilemode:0644现在看qd01-stop-free002的/opt目录下,已经有resolv.conf文件了r--1rootroot103Jan615:34resolv.conf现在可以看到虽然minion端同步了master端的文件,但是这是手动同步。如果我们需要定期检查这个,我们需要使用saltschedule6并配置时间表。调度可以配置到master或minion端。本文配置master端修改/etc/salt/master文件,添加如下#####schedule#####schedule:sysinit:function:state.orchestrateseconds:0minutes:5hours:0args:-orchestration。sysinit.sysinit说明:使用salt的state.orchestrate函数,minutes:5表示每五分钟检查一次args表示需要执行的sls,这里是sysinit.sysinit,从结构上可以看出是/srv/salt/sysinit/sysinit.sls文件。注意观察,结构就知道了。配置完我需要重启salt-master[root@altmaster001salt]#systemctlrestartsalt-master再次删除qd01-stop-free002的/opt/resolv.conf,5分钟后观察,/opt/resolv.conf又回来了.以上是一个配置文件,演示了如何使用salt自动管理远程服务器。如果需要管理多个配置文件,只需要修改sysinit.sls文件,例如/opt/resolv.conf:file.managed:-source:salt://sysinit/conf/resolv.conf-user:root-group:root-mode:644-replaceTrue:True/root/.ssh/authorized_keys:file.managed:-source:salt://sysinit/conf/authorized_keys-user:root-group:root-mode:0600-replaceTrue:True管理cron任务1.和管理配置文件一样,我们也修改了sysinit.sls文件,不过这里使用saltcron模块root_crontab_job1:cron.present:-name:sh/home/ntp.sh>>/tmp/ntp.log-minute:"00"-hour:"*/2"-identifier:NTPdescription:cron.present:saltmodulename:task语句,与系统的crontaskminute,hour,day,day,month,week参考crontabidentifier一致:用任务ID修改sysinit.sls后,我们保存退出,因为我们已经配置了自动执行同步sls任务。检查crontab-l#LinesbelowherearemanagedbySalt,五分钟后不要在qd01-stop-free002机器上编辑#SALT_CRON_IDENTIFIER:NTP00*/2***sh/home/ntp.sh>>/tmp/ntp.log对于多功能,请查看官方文档https://docs.saltstack.com/