利用salt进行系统初始化操作

Posted bobo137950263

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用salt进行系统初始化操作相关的知识,希望对你有一定的参考价值。

使用salt对系统进行初始化操作


概述

使用cobbler安装的操作系统,默认安装了一些基本的软件,比如zabbix-agent、salt-minion等,还没有对系统进行基本的初始化操作,为了实现标准化操作,需要在正式使用系统之前,对系统进行标准的初始化操作。基于这一个目标,通过salt来对系统进行初始化操作。主要操作点有如下几个:

  • DNS标准配置
  • history命令调优,记录时间和用户
  • 内核参数优化
  • yum仓库配置
  • zabbix-agent配置
  • 命令记录

下面就基于以上的优化点,来进行针对性的优化

1. DNS标准配置

对于DNS的标准配置,主要是在所有的salt-minion 上配置基本的DNS-SERVER,可以是将已经配置好的dns配置文件,分发给所有的minion,也可以是通过逐条插入的方式,在minion上进行相关配置。这里选择的是将服务器上的dns文件,分发到minion上。所以需要在master上进行相关配置。

创建dns目录结构,编写dns的状态文件,将模板配置文件,放在对应目录的files文件下

[[email protected] /srv/salt/base/init]# tree
.
└── dns
    ├── dns.sls
    └── files
        └── resolv.conf
[[email protected] /srv/salt/base/init]# cat dns/dns.sls 
dns-configuration:
  file.managed:
    - name: /etc/resolv.conf
    - source: salt://init/dns/files/resolv.conf
    - user: root
    - group: root
    - mode: 644

salt ‘*‘ state.sls init.dns.dns test=True

2. history调优设置

默认的history命令,只是会记录命令和序号,并不会记录命令时间和操作用户,所以需要在初始化配置的时候,对history进行调优。主要是要在/etc/profile文件中,对history的设置进行增加,可以是通过文件管理模块实现,也可以是直接修改minion上的该文件。

需要增加的命令如下:

export HISTTIMEFORMAT="%F %T `whoami` "

增加完该配置命令后,需要source该文件,使得生效,重新打开一个新的terminal窗口。所以这里需要做的状态文件如下:

[[email protected] /srv/salt/base/init/history]# cat history.sls 
history-configuration:
  file.append:
    - name: /etc/profile
    - text:
      - export HISTTIMEFORMAT="%F %T `whoami` "

这里使用的是file模块的append方法,是在该文件的结尾处进行增加。

3.SELinux默认配置

SELinux默认是开启的,需要关闭,然后修改配置文件。这里使用的file模块的line方法,line方法是一个行编辑方法,可以对指定的文件行进行添加、修改和删除等一系列操作,和sed等直接编辑的方法相同。

selinux-configuration:
  file.line:
    - name: /etc/selinux/config
    - match: SELINUX=enforcing
    - content: SELINUX=disabled
    - mode: replace
  cmd.run:
    - name: setenforce 0
  • name是指定需要修改的文件名称
  • match是匹配需要修改的文件内的条目
  • content是修改后的内容
  • mode是修改方式,这里写的是替换。

关闭防火墙

firewalld-service:

4.YUM源配置

所有的内网操作系统,在安装基础软件包的时候,可以是通过手动上传软件包进系统进行安装,也可以在每台服务器上挂载镜像盘进行安装,还可以在内网搭建一个YUM源,然后所有的其他服务器都以该服务器为YUM安装源,实现软件的安装。

[[email protected] /srv/salt/base/init/yumrepo]# tree
.
├── files
│   └── localyumrepo.repo
└── yumrepo.sls

1 directory, 2 files
[[email protected] /srv/salt/base/init/yumrepo]# cat yumrepo.sls 
yum-repo:
  cmd.run:
    - name: mkdir /etc/yum.repos.d/back&& mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/back
    - unless: test -d /etc/yum.repos.d/back
  file.managed:
    - name: /etc/yum.repos.d/localyumrepo.repo
    - source: salt://init/yumrepo/files/localyumrepo.repo
    - user: root
    - group: root
    - mode: 644

5.内核优化

在内核优化过程中,主要是调整的参数有如下几个:

  • ipv4的本地端口,用于连接其他服务器的端口范围
  • 打开的最大文件数量
  • 本地的ipv4转发
  • 交换分区的权重,默认为30

设置内核参数,影响的文件是/etc/sysctl.conf,使用的方法也就是sysctl模块下的present方法。所以内核优化的状态文件是这样写的。

[[email protected] /srv/salt/base/init]# cat kernel.sls 
net.ipv4.ip_local_port_range:
  sysctl.present:
    - value: 10000 65000
fs.file-max:
  sysctl.present:
    - value: 2000000 
net.ipv4.ip_forward:
  sysctl.present:
    - value: 1
vm.swappiness:
  sysctl.present:
    - value: 0

6. Zabbix-agent安装和配置

默认安装zabbix-agent,然后修改配置文件中的server配置项,在这里如果是主动模式,需要设置agent的主机名,这里我们选择指定minion-id为agent主机名。所以写一个zabbix-agent的状态配置文件。

Hostname={{ grains[‘id‘]}}

[[email protected] /srv/salt/base/init/zabbix-agent]# tree
.
├── files
│   └── zabbix_agentd.conf
└── zabbix-agent.sls

1 directory, 2 files
[[email protected] /srv/salt/base/init/zabbix-agent]# cat zabbix-agent.sls 
zabbix-agent-install:
  pkg.installed:
    - name: zabbix40-agent*
  file.managed:
    - name: /etc/zabbix/zabbix_agentd.conf
    - source: salt://init/zabbix-agent/files/zabbix_agentd.conf
    - user: root
    - group: root
    - mode: 644
    - backup: minion
    - template: jinja
  service.running:
    - name: zabbix-agent
    - enable: True
    - watch:
      - file: zabbix-agent-install

7. 状态合并

在编写了每个特定的状态模块后,因为是初始化状态,所以可以直接写入到一个状态文件中,包含这么些个状态,在minion上执行的时候,只需要执行一个状态,方便管理即可。

include:
  - init.dns.dns
  - init.firewalld
  - init.history
  - init.kernel
  - init.selinux
  - init.yumrepo.yumrepo
  - init.zabbix-agent.zabbix-agent

以上是关于利用salt进行系统初始化操作的主要内容,如果未能解决你的问题,请参考以下文章

SaltStack之salt-ssh

SaltStack之salt-ssh

使用salt-ssh初始化系统安装salt-minion

如何利用redis来进行分布式集群系统的限流设计

通过Python利用saltstack进行生成服务器资产清单

LINUX PID 1和SYSTEMD PID 0 是内核的一部分,主要用于内进换页,内核初始化的最后一步就是启动 init 进程。这个进程是系统的第一个进程,PID 为 1,又叫超级进程(代码片段