自动化运维工具SaltStack01 – 之SaltStack介绍与安装

  • A+
所属分类:DevOps saltstack

一、介绍

1.1、saltstack介绍

1.2、saltstack介绍

        SaltStack是一个新的基础平台管理工具,只需要花费数分钟即可运行起来,可以支撑上千万台服务器规模,数秒即可完成数据传递;

        SaltStack是基于python语言开发的,同时提供Rest API方便二次开发以及和其他平台集成;

1.3、saltstack的四大功能

  • 远程执行:远程执行命令、脚本等
  • 配置管理:配置软件、配置文件等
  • 云管理:自动化创建虚拟机
  • 时间驱动:通过事件驱动另一个进程(发生了一个事件之后会自动触发另一个事件)

1.4、saltstack的三种运行模式

  • 本地运行:再本机执行命令等,(比较鸡肋)
  • Master/Minion:需要在被管理端安装客户端(salt-minion)
  • Salt SSH:不需要安装客户端,通过ssh的方式连接

1.5、saltstack支持的操作系统

  • CentOS
  • Redhat
  • Debian
  • Ubuntu
  • FreeBSD
  • Solaris
  • Fedora
  • Gentoo
  • MAC OS X
  • Archlinux
  • Windows
  • Suse

二、saltstack部署

2.1、环境准备

主机名 IP地址 主机角色 操作系统
linux-node1.example.com
192.168.55.11 salt-master CentOS 7.2
linux-node2.example.com
192.168.55.12 salt-minion CentOS 7.2

服务器基础优化参考:CentOS 7.x – 最小化安装系统后基础优化

2.2、安装saltstack

1.安装saltstack的yum源

# rpm -ivh https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

2.安装salt-master与salt-minion

master端安装:yum install -y salt-master
minion端安装:yum install -y salt-minion

2.3、配置与启动

1.启动salt-master

# systemctl start salt-master
# cd /etc/salt/
# ls
master  minion  pki
# tree pki
pki
└── master
    ├── master.pem     #salt-master的公钥
    ├── master.pub      #salt-master的私钥
    ├── minions
    ├── minions_autosign
    ├── minions_denied
    ├── minions_pre
    └── minions_rejected

6 directories, 2 files

2.配置salt-minion

# sed -n '16p' /etc/salt/minion 
master: 192.168.56.11           #告诉minion   salt-master是谁,:冒号后面需要有空格
  • 关于salt的通讯ID说明:在salt-minion端里有个ID的配置,如果配置ID则使用配置里的ID作为主机通讯标记,如果不配置ID则默认以主机名作为为主机通讯标记的ID,ID如果修改,需要删除之前认证的KEY,然后重新添加KEY;
  • 那么如何重新添加ID那?  -->  {1.停止需要修改ID的salt-minion  2.master端salt-key -d  删除老的id   3.删除minion端的/etc/salt/minion_id   4.删除minion端/etc/salt/pki  5.修改minion配置文件的id   6.启动minion   7.master端重新salt-key加入}

3.启动salt-minion端,然后查看minion端的配置

# systemctl start salt-minion
# cd /etc/salt
# tree

.

├── minion

├── minion.d

├── minion_id

└── pki

    └── minion

        ├── minion.pem    #minion的公钥

        └── minion.pub    #minion的私钥


3 directories, 4 files

4.minion端启动后此时再查看master端的密钥

# cd /etc/salt
# tree
.
├── master
├── minion
├── minion.d
├── minion_id
└── pki
    ├── master
    │   ├── master.pem
    │   ├── master.pub
    │   ├── minions
    │   ├── minions_autosign
    │   ├── minions_denied
    │   ├── minions_pre
│   │   ├── linux-node1.example.com        #minion启动后会将minio端的公钥发送到master端
    │   │   └── linux-node2.example.com    #minion启动后会将minio端的公钥发送到master端
    │   └── minions_rejected
    └── minion
        ├── minion.pem
        └── minion.pub

9 directories, 9 files
注:发现minion端的公钥是通过ID来命名的,所以说如果修改了minion端的id就会导致master端无法和minion端通讯
  • SlatStack的master与minion的通讯说明:

        salt-master发送一个指令时,所有的minion端都会收到,但是minion端会自己识别要执行的任务里是否包含自己{包含则执行,不包含则忽略},

        这样设计是否科学那?{master端计算的话需要发送请求到minion端,minion端接收请求,然后返回master端,然后master再判断},{minion端计算的话需要master端发送请求,minion端判断任务里包含我我就执行,不包含我就不执行,所以minion端计算的方式比master端计算的方式节省资源}

        minion端以长链接的方式连接master的4505端口实现发送消息,4506端口接收消息。

2.4、salt-master添加salt-minion密钥来实现管理minion

1.salt-master查看都有哪些密钥

# salt-key
Accepted Keys:    #已经同意的key有哪些
Denied Keys:      #拒绝的key有哪些
Unaccepted Keys:    #未同意的key有哪些
linux-node1.example.com
linux-node1.example.com
Rejected Keys:     #被拒绝的key有哪些   

2.同意minion端的密钥

# salt-key -A
The following keys are going to be accepted:
Unaccepted Keys:
db02-36
saltstack-41
Proceed? [n/Y] y    #确认信息,是否同意这两个key
Key for minion linux-node1.example.com accepted.
Key for minion linux-node1.example.com accepted.

2.5、salt-key命令的参数说明

-d 删除单个key,也支持*号模糊匹配删除   (针对key的操作)
-D 删除所有key,慎用                    (针对key的操作)
-L 列表                                 (远程执行、列表key等)
-A 同意所有key                          (针对key的操作)
-a 同意单个,可以用*号迷糊匹配添加      (针对key的操作)
-G 匹配Grains                           (远程执行)
-I 匹配Pillar                             (远程执行)
-E 支持正则表达式                       (远程执行)
-S 指定客户端的ip地址                   (远程执行)
-C 一条远程执行的命令同时支持多个参数   (远程执行)
-N 支持节点组                           (远程执行)

2.6、测试salt-master与salt-minion端的通讯

# salt 'linux-node1*' test.ping
linux-node1.example.com:
    True     #True为通

saltstack安装就介绍到这里,后续持续更新····

 

 

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: