一般系统交付后,是一个纯净的系统,所以需要做一些初始化工作,现在我们就用salt自动实现这些初始化工作。
需求1:账户建立
一般系统交付后都要建立一些维护业务程序的账号或者和业务相关的特定系统账号,这些账号有固定的UID、GID、初始化密码、家目录、访问权限等等,这样方便以后进行集中管理。
由于我们为了以后方便新增用户,所以打算在pillar中添加新增用户,目录结构如下:
pillar_roots包含的信息如下:
file_roots包含的信息如下:
在服务端192.168.1.203上进行操作,只给192.168.1.201添加test1、test2用户
在客户端192.168.1.201进行验证
看看,问题出来了,我在配置文件中定义了maxdays等账号过期信息,在服务端执行时该信息并没有显示出来,而且在客户端也没有实际效果,但是官方文件中明确是支持这些功能的,估计是epel中salt版本太低了。
还有个问题,账户建立后,后期肯定有修改密码的需求,但是翻了salt的模块文档,发现没有修改用户密码的模块,看来后面得自己扩展一个。
需求2:初始化sysctl的参数
一般在系统使用前需要根据业务针对TCP链接、内存使用、路由转发之类的参数做一些调整。
pillar_roots目录不用新增信息,file_roots目录包含的新增信息如下,只是多增加了sysctl目录:
相关文件内容如下:
在sysctl目录下新增init.sls文件,然后写入你要修改的sysctl条目,接着在base的top.sls文件中加入该sysctl模块,在master上执行,还是修改192.168.1.201的,结果如下:
客户端上的结果如下:
以上只是修改了ip转发,你可以根据自己的情况调整其他相关参数
需求3:修改ulimit
现在系统承载的功能越来越多,经常遇到单个进程文件描述符被用完,所以一般在系统初始化时也会修改ulimit参数
pillar_roots目录不用新增信息,file_roots目录包含的新增信息如下,只是多增加了ulimit目录:
同理,在base/top.sls文件中新增ulimit模块,相关文件内容如下:
在master上修改192.168.1.202的ulimit参数
先登陆192.168.1.202查看ulimit的当前值,在master执行完毕后,推出192.168.1.202然后重新登陆,让PAM重新加载ulimit信息,再次查看ulimit的当前值
当然,除了open file之外 core file size、stack size等参数也都是经常需要调整的
需求4:ssh无密码登陆
现在的公司很崇尚ssh无密码登陆,本人是很不喜欢这种无密码登陆方式的,但是这个功能还是必须得实现的,实现从master使用root和test1用户可以无密码登陆客户端
pillar_roots目录不用新增信息,file_roots目录包含的新增信息如下,只是多增加了user_sshkey目录:
在user_sshkey下面除了默认的init.sls文件外,还有一个id_rsa.pub公钥文件,这个文件会被传输到客户端,开启ssh无密码登陆,相关文件内容如下:
还是惯例,把user_sshkey模块加入base/top.sls文件,然后在user_sshkey目录下新增init.sls文件,该文件主要有三部分,root_sshkey:是让root用户可以无秘法登陆,test1:是确认客户端是否有test1用户.ssh目录,test1_sshkey:则是把公钥拷贝进去,由于192.168.1.201上创建了test1用户,所以我们这次还是以192.168.1.201为例,操作如下:
从上面的结果图可以看到,刚开始的时候,在master登陆192.168.1.201是需要密码的,不过在master上运行完相关命令后,再次登陆192.168.1.201时已经不需要密码了了。
需求5:优化开机启动项
在默认的系统启动过程中,加入了很多平时基本不用的服务,这样就势必加慢了机器的启动过程,所以我们需要禁止这些开机启动项,至于禁止哪些开机启动项,则需要你根据你提供的服务进行选择。
pillar_roots目录不用新增信息,file_roots目录包含的新增信息如下,只是多增加了service目录:
把service加入base/top.sls文件中,相关文件的内容如下:
这次我们禁止192.168.1.204上面的这些开机启动项,在master上开始执行命令