查看原文
其他

运维思索:操作系统配置规范化、自动化

木讷大叔爱运维 木讷大叔爱运维 2022-07-13




读完需 6 分钟

 速读需 3 分钟 



运维思索:操作系统安装规范化一文只是实现了对操作系统的主机名、网络、磁盘分区的安装规范,但此时还不能够直接用于生产,因为操作系统还有很多配置没有进行优化,接下来的工作就是要对操作系统进行配置规范化。

思路

让我们先停止手头无休止的工作,来简单回想下曾经配置过数不清的服务器,配置过程是否和以下有所类似:

  • yum源配置
    阿里源、163源、epel源等

  • 安装常用工具
    gcc、gcc-c++、cmake、wget、iftop、supervisor等

  • 环境变量配置
    a.终端超时时间
    b.优化history

  • 关闭并停用selinux

  • 创建基础目录

  • 创建应用用户

  • ntp设置

  • limit限制
    a. 文件描述符65535
    b. 进程数65535

  • sshd 安全加固
    a. 端口更改 ----测试阶段仍是22
    b. 禁止root登录等优化

  • 各种agent安装

  • iptables
    a. 关闭iptables 、firewall
    b. 有防火墙,做基础配置

  • 内核参数调整

  • 开机启动
    rc.local 需要授权755,默认缺少可执行权限。

  • 设置dns

  • 安全设置
    密码复杂度、禁止无用服务等


以上基本都是操作系统配置优化可能涉及到的点,相信我们肯定都配置过。重点是我们还在日复一日的手动或脚本化的个性化执行,还是已经提取规范、在团队中流转自动化、批量化按需执行?


是的,如果运维团队不大,手动或脚本能够满足配置需求;但一旦上规模,团队中每个人由于个人认知、习惯等,配置后的系统差异化很大。此时就凸显了配置规范化的重要性,配合自动化运维工具,可实现配置的自动化、批量化及按需配置等功能,有效避免了团队的配置差异化。

系统配置规范

对于规范,我们还是要按照统一的规范编写风格,遵循简单清晰、直观展示的原则,详见运维思索:运维规范如何生成?


当然规范的依据是建立在事实基础之上,在上文已经提出了,我们只需将其整合以下即可,具体涉及以下几方面:

  1. 用户
    服务器使用固定用户,主要为管理用户、应用用户、日志用户

  2. 软件源
    安装基础组件需要通过统一的软件源

  3. 关闭服务
    统一关闭selinux、iptables、sendmail、postfix等无用服务

  4. 初始目录
    创建固定的初始目录,如应用、日志、备份等目录

  5. limit及内核参数

  6. DNS及NTP

  7. 环境变量及历史命令记录
    终端超时
    历史命令记录及远程备份

  8. ssh优化
    禁止root登录
    ssh登录慢优化
    修改默认端口

  9. 安全设置
    密码复杂度及长度等
    禁止ctrl+alt+delete等


为了避免规范化细节输出,给本就不轻松的运维工作增加额外的负担,因此我们还是列举要点,至于细节可以参看自动化部署内容,便于我们规范+实操的有效结合。

配置自动化

结合配置规范化,我们下一步的工作就是自动化的实现。在此为应对不同服务器的需求,我们最好是能实现按需配置,即既可以实现配置的全部执行,也可以实现某个配置需求的单独执行。因此我们要提前做好功能的分配


在此我们使用ansible对服务器进行配置的自动化完全化,以及通过tag实现按需配置。

#对配置自动化通过ansible-playbook实现vim os_init.yml- hosts: "{{ host_ip }}" gather_facts: yes remote_user: root roles: - os_init
#其中task如下vim mail.yml- include: user.yml #用户管理- include: repo.yml #yum源- include: init_pkg.yml #安装基础组件- include: profile.yml #环境变量- include: selinux.yml #selinux- include: dir.yml #基础目录- include: limits.yml #系统参数- include: iptables.yml #防火墙- include: sysctl.yml #内核参数- include: rc.local.yml #开机启动- include: dns.yml #dns- include: ntp.yml #ntp- include: rsyslog.yml #日志同步- include: sshd.yml #ssh优化- include: safe.yml #安全配置
#服务器配置完全化ansible-playbook -b -e host_ip=10.10.2.10 -v os_init.yml#通过tag实现单独添加用户ansible-playbook -b -e host_ip=10.10.2.10 -v os_init.yml -t user#通过tag实现单独安全配置ansible-playbook -b -e host_ip=10.10.2.10 -v os_init.yml -t safe

我们通过host_ip既可以实现服务器的单独执行,也可以配置通过ansible资产实现服务器的批量执行。

总结

在操作系统的安装规范化+配置规范化前提下,结合Cobbler+Ansible实现了操作系统的安装、配置自动化,可以在一定程度上解决运维工作中的基础运维部分,其更深远的意义在于有效避免了因配置参数混乱导致的生产问题,为日后更多的自动化接入打好了基础。


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存