自动化运维——SaltStack管理工具

SaltStack管理工具

SaltStack需要安装服务端:salt-master客户端:salt-minion

SaltStack服务启动后监听端口

TCP4505端口:用于Master和Minion认证通信

TCP4506端口:为master用来发送命令或者接受Minion的命令返回信息

安装启动SaltStack

安装环境准备:

Master:192.168.11.25

Minion:192.168.11.26、192.168.11.27

1.三台服务器安装epel源:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

2.修改主机名

master服务端:hostnamectl set-hostname master
minion客户端1:hostnamectl set-hostname server1
minion客户端2:hostnamectl set-hostname server2

3.三台服务器修改host文件

vim /etc/hosts

192.168.11.25 master
192.168.11.26 server1
192.168.11.27 server2

Master安装启动salt-master软件

1.安装salt-master软件

yum -y install salt-master

2.master修改配置文件

vim /etc/salt/master

#监控地址
interface: 192.168.11.25 
#确认证书信任
auto_accept: True
file_roots:
  base:
    - /srv/salt/
#开启pillar功能
pillar_opts: Ture
pillar_roots:
  base:
    - /srv/pillar
#添加管理的主机名
nodegroups:
 group1: 'server1'
 group2: 'server2'

3.创建配置文件中对应的目录

mkdir /srv/salt

mkdir /srv/pillar

4.启动master服务

systemctl start salt-master

Minion安装启动salt-minion软件

1.安装salt-minion软件

yum install -y salt-minion

2.两台Minion修改配置文件

192.168.11.26:vim /etc/salt/minion

master: 192.168.11.25 #服务端的地址
id: server1   #本机的主机名

192.168.11.27:vim /etc/salt/minion

master: 192.168.11.25   #服务端的地址
id: server2   #本机的主机名

3.两台Minion启动服务

systemctl start salt-minion

测试服务端和客户端的通信状况(如下图为成功):

salt '*' test.ping

SaltStack具体命令应用

查看版本信息:

salt --version

salt --versions-report

查看多个minion:salt-key -L

接受指定的minion:salt-key -a slave1.kgc.com

接受所有的minion:salt-key -A

删除指定的Minion:salt-key -d slave1.kgc.com

删除所有的Minion:salt-key -D

拒绝指定的minion:salt-key -r slave1.kgc.com

拒绝所有的minion:salt-key -R

查看存活的minion:salt-run manage.up

查看down机的minion:salt-run manage.down

查看down掉的minion,并将其删除:salt-run manage.down removekeys=True

查看minion的相关状态:salt-run manage.versions

minion分组规则:

G --针对Grains做单个匹配,例如:G@os:Ubuntu

E --针对minion针对正则表达式匹婚配,例如:E@webd+.(dev|qa|prod).loc

P --针对Grains做正则表达式匹配,例如:P@os:(RedHat|Fedora|CentOS)    

L --针对minion做列表匹配,例如:L@minion1.test.com,minion3.domain.com or bl*.domain.com

I --针对 Pillar 做单个匹配,例如:I@pdata:foobar

S --针对子网或是IP做匹配,例如:S@192.168.1.0/24 or S@192.168.1.100

R --针对客户端范围做匹配,例如:R@%foo.bar

常用模块

pkg模块(安装软件)

salt -N 'web01group' pkg.install 'httpd'

salt -N 'web02group' pkg.remove 'httpd'

file模块(文件操作)

salt -N 'web02group' file.rename /root/test.txt /root/aaa.txt

cmd(远程在客户端shell环境下执行命令)

salt -N 'web02group' cmd.run "whoami"

user模块(作用是管理系统账户操作

service模块(管理服务状态)

salt '*' service.disable httpd

salt '*' service.start httpd

cron模块(管理操作任务cron服务操作)

SaltStack配置安装nginx

1.创建_grains目录

mkidr /srv/salt/_grains

2.编辑配置文件的进程优化脚本

vim /srv/salt/_grains/nginx_config.py

#!/usr/bin/python
import os,sys,commands
def NginxGrains():
    '''
        return Nginx config grains value
    '''
    grains ={}
    max_open_file=65536

    try:
        getulimit=commands.getstatusoutput('source /etc/profile;ulimit -n')
    except Exception,e:
        pass
    if getulimit[0]==0:
        max_open_file=int(getulimit[1])
    grains['max_open_file'] = max_open_file
    return grains

3.在/srv/pillar目录下创建sls文件

vim top.sls

base:
  group1:
    - match: nodegroup
    - server1
  group2:
    - match: nodegroup
    - server2

vim server1.sls

nginx:
  root: /data

vim server2.sls

nginx:
  root: /www

4.同步grains模块:salt '*' saltutil.sync_all

查看结果:salt '*' grains.item max_open_file

5.在salt目录创建top.sls文件执行nginx.sls这个文件

vim top.sls

base:
  '*':
  - nginx

6.编写安装nginx的脚本文件

vim /srv/salt/nginx.sls

nginx:
 pkg:
 - installed

 file.managed:
  - source: salt://nginx/nginx.conf
  - name: /etc/nginx/nginx.conf
  - user: root
  - group: root
  - mode: 644
  - template: jinja

 service.running:
  - enable: True
  - reload: True
  - watch:
    - file: /etc/nginx/nginx.conf
    - pkg: nginx

7.使用jinja模板定义nginx配置文件nginx.conf,首先创建一个nginx目录,因为上面定义了nginx配置文件的源路径

mkdir /srv/salt/nginx

vim /srv/salt/nginx/nginx.conf

user nginx;
worker_processes {{grains['num_cpus']}};
{%if grains['num_cpus'] ==1 %}
worker_cpu_affinity 10;
{%elif grains['num_cpus'] ==2 %}
worker_cpu_affinity 01 10;
{%elif grains['num_cpus'] ==4 %}
worker_cpu_affinity 0001 0010 0100 1000;
{%elif grains['num_cpus'] ==8 %}
{%else%}
worker_cpu_affinity 0001 0010 0100 1000;
{%endif%}
worker_rlimit_nofile {{grains['max_open_file']}};
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;

include /usr/share/nginx/modules/*.conf;

events {
    worker_connections {{grains['max_open_file']}};
}

http {
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile            on;
    tcp_nopush          on;
    tcp_nodelay         on;
    keepalive_timeout   65;
    types_hash_max_size 2048;

    include             /etc/nginx/mime.types;
    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;

    server {
        listen       80 default_server;
        listen       [::]:80 default_server;
        server_name  _;
        root         /usr/share/nginx/html;

        include /etc/nginx/default.d/*.conf;

        location / {
          root {{pillar['nginx']['root']}};
          index index.html index.htm;
        }

        error_page 404 /404.html;
            location = /40x.html {
        }

        error_page 500 502 503 504 /50x.html;
            location = /50x.html {
        }
    }

}

这里的worker_processes的参数和worker_connections参数都是通过脚本去随着服务器的CPU和处理变化来进行变化达到最优配置

8.运行开始安装

 salt '*' state.highstate

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值