zoukankan      html  css  js  c++  java
  • saltstack系统初始化(九)

    一、系统初始化需要的配置

    当我们的服务器上架并安装好操作系统后,都会有一些基础的操作,所以生产环境中使用SaltStack,建议将所有服务器都会涉及的基础配置或者软件部署归类放在base环境下。此处,在base环境下创建一个init目录,将系统初始化配置的sls均放置到init目录下,称为“初始化模块”。

    (1)需求分析和模块识别

    初始化内容模块使用文件
    关闭SElinux file.managed /etc/selinux/config
    关闭默认firewalld service.disabled
    时间同步 pkg.installed
    文件描述符 file.managed /etc/security/limits.conf
    内核优化 sysctl.present
    SSH服务优化 file.managed、service.running
    精简开机系统服务 service.dead
    DNS解析 file.managed /etc/resolv.conf
    历史记录优化history file.append /etc/profile
    设置终端超时时间 file.append /etc/profile
    配置yum源 file.managed /etc/yum.repo.d/epel.repo
    安装各种agent pkg.installed 、file.managed、service.running
    基础用户 user.present、group.present
    常用基础命令 pkg.installed、pkgs
    用户登录提示、PS1的修改 file.append /etc/profile

     SaltStack环境设置:
    base环境用于存放初始化的功能,prod环境用于放置生产的配置管理功能

    [root@7mini-node1 ~]# vim /etc/salt/master
    file_roots:
      base:
        - /srv/salt/base
      dev:
        - /srv/salt/dev
      test:
        - /srv/salt/test
      prod:
        - /srv/salt/prod
    
    pillar_roots:
      base:
        - /srv/pillar/base
      prod:
        - /srv/pillar/prod
    

    (2)需求实现

    [root@7mini-node1 base]# pwd
    /srv/salt/base
    [root@7mini-node1 base]# mkdir init/files -p
    

     1.关闭selinux  

    [root@7mini init]# cat selinux.sls 
    selinux-config:
      file.managed:
        - name: /etc/selinux/config
        - source: salt://init/files/selinux-config
        - user: root
        - group: root
        - mode: 0644
    [root@7mini-node1 init]# cp /etc/selinux/config files/selinux-config  

    [root@7mini init]# salt '*' state.sls init.selinux

    2.关闭firewalld

    [root@saltstack01 init]# cat firewalld.sls 
    firewall-stop:
      service.dead:
        - name: firewalld.service
        - enable: False
    [root@saltstack01 init]# salt '*' state.sls init.firewalld
    

    3.时间同步

    [root@saltstack01 init]# cat ntp.sls 
    ntp.install:
      pkg.installed:
        - name: ntpdate
    
    cron-netdate:
      cron.present:
        - name: ntpdate time.aliyun.com
        - user: root
        - minute: 5
    [root@saltstack01 init]# salt '*' state.sls init.ntp
    

    4、修改文件描述符

    [root@saltstack01 init]# cat limit.sls 
    limit-config:
      file.managed:
        - name: /etc/security/limits.conf
        - source: salt://init/files/limits.conf
        - user: root
        - group: root
        - mode: 0644
    [root@saltstack01 init]# echo "*               -       nofile          65535" >> files/limits.conf 
    [root@saltstack01 init]# salt '*' state.sls init.limit5、内核优化

    5、内核优化  

    #使用sysctl模块的present方法,此处演示一部分,这里没有使用name参数,所以id就相当于是name
    
    [root@7mini-node1 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@7mini-node1 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@7mini-node1 init]# cp /etc/ssh/sshd_config files/
    [root@7mini-node1 init]# vim files/sshd_config 
    Port 8023    #自定端口
    UseDNS no
    PermitRootLogin no
    PermitEmptyPasswords no
    GSSAPIAuthentication no
    

    7、DNS解析

    [root@7mini-node1 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@7mini-node1 init]# cp /etc/resolv.conf files/
    

    8.历史记录优化history

    #使用file.append扩展修改HISTTIMEFORMAT的值
    [root@7mini-node1 init]# vim history.sls 
    history-config:
      file.append:
        - name: /etc/profile
        - text:
          - export HISTTIMEFORMAT="%F %T `whoami` "
          - export HISTSIZE=500
          - export HISTFILESIZE=500

    9.设置终端超时时间

    #使用file.append扩展修改TMOUT环境变量的值
    
    [root@saltstack01 init]# 
    [root@saltstack01 init]# cat tty-timeout.sls 
    ty-timeout:
      file.append:
        - name: /etc/profile
        - text:
          - export TMOUT=300
    

    10.配置yum源

    [root@saltstack01 init]# cat yum-repo.sls 
    /etc/yum.repos.d/epel.repo:
      file.managed:
        - source: salt://init/files/CentOS-Base.repo
        - user: root
        - group: root
        - mode: 0644   
    [root@saltstack01 init]# ll files/CentOS-Base.repo 
    -rw-r--r-- 1 root root 2573 Jun 4 15:18 files/CentOS-Base.repo
    

    11、基础用户

    #增加基础管理用户www,使用user.present和group.present
    
    [root@saltstack01 init]# cat 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
    

    12、常用基础命令

    #这里因为各软件包会依赖源,所以使用include讲yum源包含进来,并在pkg.installed最后增加require依赖
    [root@saltstack01 init]# cat 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
    

    13、用户登陆提示

    [root@saltstack01 init]# cat tty-ps1.sls 
    /etc/bashrc:
      file.append:
        - text:
          - export PS1=' [u@h w]$ '
    [root@saltstack01 init]# salt '*' state.sls init.tty-ps1
    

    14、另外配置安装各种agent(比如安装zabbix-agent)

    #相当于一个软件的安装、配置、启动,此处也使用了jinja模板和pillar

    [root@7mini-node1 base]# mkdir zabbix
    [root@7mini-node1 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: 10.0.0.11
    

    15、写一个安装所有配置的集合

    [root@saltstack01 init]# cat 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.tty-timeout
      - init.tty-ps1
      - init.user-www
    

    16 写一个执行的top.sls的文件

    #在top.sls里面给Minion指定状态并执行,强烈建议先测试,确定SaltStack会执行哪些操作然后再应用状态到服务器上
    [root@7mini-node1 base]# vim top.sls 
    base:
      '*':
        - init.init-all
    [root@7mini-node1 base]# salt '*' state.highstate test=True
    [root@7mini-node1 base]# salt '*' state.highstate 
    

      

      

      

      

      

      

      

      

      

     

     

      

      

      

  • 相关阅读:
    python pyinotify模块详解
    lastpass密码管理工具使用教程
    MAMP 环境下安装Redis扩展
    SourceTree使用方法
    Mac securecrt 破解
    Memcache 安装
    Warning: setcookie() expects parameter 3 to be long, string given
    SQLSTATE[HY000] [2002] Connection refused
    插件管理无法访问
    光栅化渲染器
  • 原文地址:https://www.cnblogs.com/jimmy-xuli/p/9135028.html
Copyright © 2011-2022 走看看