saltstack之系统优化
系统优化
简述:
在服务器上架并安装好操作系统之后,一般都会进行一下基础的的操作,在生产环境中我们可以使用saltstack快速批量执行这些基础操作,以次来减轻运维压力。
建议将所有服务器都会涉及的基础配置或者软件部署归类放在base环境下。此处,在base环境下创建一个init目录,将系统初始化配置的sls均放置到init目录下
称为“初始化模块”。
需求实现:
[root@slave1 /srv/salt/base]# pwd /srv/salt/base [root@slave1 /srv/salt/base]# mkdir init/files/ -p 1、关闭selinux #使用了file模块的managed方法 [root@slave1 /srv/salt/base/init]# vim selinux.sls selinux-config: file.managed: - name: /etc/selinux/config - source: salt://init/files/selinux-config - user: root - group: root - mode: 0644 [root@slave1 /srv/salt/base/init]# cp /etc/selinux/config files/selinux-config 2、关闭firewalld #使用service模块的dead方法,直接关闭firewalld,并禁止开机启动 [root@slave1 /srv/salt/base/init]# vim firewalld.sls firewall-stop: service.dead: - name: firewalld.service - enable: False 3、时间同步 #先使用pkg模块安装ntp服务,再使用cron模块加入计划任务 [root@slave1 /srv/salt/base/init]# vim ntp.sls ntp-install: pkg.installed: - name: ntpdate cron-ntpdate: cron.present: - name: ntpdate time1.aliyun.com - user: root - minute: 5 4、修改文件描述符 #使用file模块的managed方法 [root@slave1 /srv/salt/base/init]# vim limit.sls limit-config: file.managed: - name: /etc/security/limits.conf - source: salt://init/files/limits.conf - user: root - group: root - mode: 0644 [root@slave1 /srv/salt/base/init]# cp /etc/security/limits.conf files/ [root@linux-node1 init]# echo "* - nofile 65535 " >> files/limits.conf 5、内核优化 #使用sysctl模块的present方法,此处演示一部分,这里没有使用name参数,所以id就相当于是name [root@slave1 /srv/salt/base/init]# vim sysctl.sls net.ipv4.tcp_fin_timeout: sysctl.present: - value: 2 net.ipv4.tcp_tw_reuse: sysctl.present: - value: 1 net.ipv4.tcp_tw_recycle: sysctl.present: - value: 1 net.ipv4.tcp_syncookies: sysctl.present: - value: 1 net.ipv4.tcp_keepalive_time: sysctl.present: - value: 600 6、SSH服务优化 #使用file.managed和service.running以及watch,对ssh服务进行优化配置 [root@slave1 /srv/salt/base/init]# vim sshd.sls sshd-config: file.managed: - name: /etc/ssh/sshd_config - source: salt://init/files/sshd_config - user: root - gourp: root - mode: 0600 service.running: - name: sshd - enable: True - reload: True - watch: - file: sshd-config [root@slave1 /srv/salt/base/init]# cp /etc/ssh/sshd_config files/ [root@slave1 /srv/salt/base/init]# vim files/sshd_config Port 8022 UseDNS no PermitRootLogin no PermitEmptyPasswords no GSSAPIAuthentication no 7、精简开机启动的系统服务 #举例关闭postfix开机自启动 [root@slave1 /srv/salt/base/init]# vim thin.sls postfix: service.dead: - enable: False 8、DNS解析 [root@slave1 /srv/salt/base/init]# vim dns.sls dns-config: file.managed: - name: /etc/resolv.conf - source: salt://init/files/resolv.conf - user: root - group: root - mode: 644 [root@linux-node1 init]# cp /etc/resolv.conf files/ 9、历史记录优化history #使用file.append扩展修改HISTTIMEFORMAT的值 [root@slave1 /srv/salt/base/init]# vim history.sls history-config: file.append: - name: /etc/profile - text: - export HISTTIMEFORMAT="%F %T `whoami` " - export HISTSIZE=5 - export HISTFILESIZE=5 10、设置终端超时时间 #使用file.append扩展修改TMOUT环境变量的值 [root@slave1 /srv/salt/base/init]# vim tty-timeout.sls ty-timeout: file.append: - name: /etc/profile - text: - export TMOUT=300 11、配置yum源 #拷贝yum源 [root@slave1 /srv/salt/base/init]# vim yum-repo.sls /etc/yum.repos.d/epel.repo: file.managed: - source: salt://init/files/epel.repo - user: root - group: root - mode: 0644 12、安装各种agent(如安装zabbix-agent) #相当于一个软件的安装、配置、启动,此处也使用了jinja模板和pillar [root@slave1 /srv/salt/base]# mkdir zabbix [root@slave1 /srv/salt/base]# vim zabbix/zabbix-agent.sls zabbix-agent: pkg.installed: - name: zabbix22-agent file.managed: - name: /etc/zabbix_agentd.conf - source: salt://zabbix/files/zabbix_agentd.conf - template: jinja - defaults: ZABBIX-SERVER: {{ pillar['zabbix-agent']['Zabbix_Server'] }} - require: - pkg: zabbix-agent service.running: - enable: True - watch: - pkg: zabbix-agent - file: zabbix-agent zabbix_agent.conf.d: file.directory: - name: /etc/zabbix_agentd.conf.d - watch_in: - service: zabbix-agent - require: - pkg: zabbix-agent - file: zabbix-agent [root@linux-node1 srv]# vim pillar/base/zabbix.sls zabbix-agent: Zabbix_Server: 192.168.56.11 13、基础用户 #增加基础管理用户www,使用user.present和group.present [root@slave1 /srv/salt/base/init]# vim user-www.sls www-user-group: group.present: - name: www - gid: 1000 user.present: - name: www - fullname: www - shell: /sbin/bash - uid: 1000 - gid: 1000 14、常用基础命令 #这里因为各软件包会依赖源,所以使用include讲yum源包含进来,并在pkg.installed最后增加require依赖 [root@slave1 /srv/salt/base/init]# vim pkg-base.sls include: - init.yum-repo base-install: pkg.installed: - pkgs: - screen - lrzsz - tree - openssl - telnet - iftop - iotop - sysstat - wget - dos2unix - lsof - net-tools - mtr - unzip - zip - vim - bind-utils - require: - file: /etc/yum.repos.d/epel.repo 15、用户登录提示、PS1的修改 [root@slave1 /srv/salt/base/init]# vim tty-ps1.sls /etc/bashrc: file.append: - text: - export PS1=' [\u@\h \w]\$ ' 16、编写一个总的状态,并写入top file中 #将所有初始化所需要的功能编写完成,每个小功能都是一个sls文件,统一放在init目录下。此时再使用include把这些初始化的功能都包含进来。 [root@slave1 /srv/salt/base/init]# vim init-all.sls include: - init.dns - init.yum-repo - init.firewalld - init.history - init.limit - init.ntp - init.pkg-base - init.selinux - init.sshd - init.sysctl - init.thin - init.tty-timeout - init.tty-ps1 - init.user-www #在top.sls里面给Minion指定状态并执行,强烈建议先测试,确定SaltStack会执行哪些操作然后再应用状态到服务器上 [root@slave1 /srv/salt/base/init]# vim top.sls base: '*': - init.init-all [root@slave1 /srv/salt/base]# salt '*' state.highstate test=True [root@slave1 /srv/salt/base]# salt '*' state.highstate

浙公网安备 33010602011771号