第一章:SaltStack简介与部署3 min read

  • A+
所属分类:SaltStack

1. SaltStack简介

   1.1 SaltStack四大功能

   1.2 SaltStack的三种运行方式

   1.3 SaltStack支持的操作系统

   1.4. salt消息队列

   1.5 master/minion之间的认证

2. SaltStack安装部署

   2.1 本次安装机器环境

   2.2 部署验证

 

1. SaltStack简介

  

   SaltStack是一个自动化管理工具之一,可以支撑管理上万台服务器的规模,数秒钟即可完成数据传递。是使用Python语言开发的,同事提供Rest API方便二次开发以及河其他人平台进行集成。

 

SaltStack常用网址:

    • 官方网站http://www.saltstack.com

    • 官方文档http://docs.saltstack.com

    • GitHub: https://github.com/saltstack

    • 中国SaltStack用户组http://www.saltstack.cn

 

https://www.unixhot.com/docs/saltstack/

https://www.unixhot.com/docs/saltstack/ref/states/all/index.html#all-salt-states

 

1.1 SaltStack四大功能

 

    • 远程执行

    • 配置管理

    • 云管理

    • 事件驱动(事件通知)

 

1.2 SaltStack的三种运行方式

 

    • Local

    • Master/Minio

    • Salt SSH

 

1.3 SaltStack支持的操作系统

   

CentOS

Debian

Solaris

RedHat

Ubuntu

FreeBSD

Fedora

Gentoo

Gentoo

MAC OS X

Archlinux

Windows

Suse

 

 

 

 

 

  

1.4. salt消息队列

  

master/minion发消息原理:

   在启动master和minion后,master会启动两个端口而minion端不会起端口,master起的两个端口分别为4505和4506,salt默认用的一个消息队列,叫做zeromq(消息队列)。

在装salt时默认会装一个zeromq的包,所有minion都会连接到salt的4505的这个端口上,4505端口是salt的消息发布系统,4506是salt客户端与服务端通信的端口,通过lsof命令查看本机4505建立的连接:

[root@linux-node1 ~]# lsof -n -i:4505
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
salt-mast 18777 root   16u  IPv4  59401      0t0  TCP *:4505 (LISTEN)
salt-mast 18777 root   18u  IPv4  65316      0t0  TCP 192.168.56.11:4505->192.168.56.11:57373 (ESTABLISHED)
salt-mast 18777 root   19u  IPv4  65454      0t0  TCP 192.168.56.11:4505->192.168.56.12:59227 (ESTABLISHED)
salt-mini 20040 root   27u  IPv4  65315      0t0  TCP 192.168.56.11:57373->192.168.56.11:4505 (ESTABLISHED)

  

1.5 master/minion之间的认证


(1). minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和 minion.pub(public key),然后将 minion.pub发送给master。

(2). master在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的 public key,然后master就能对minion发送指令了


2. SaltStack安装部署

 

2.1 本次安装机器环境

 

角色

主机名

IP

系统

Master/Minion

linux-node1.example.com

192.168.56.11

CentOS-7.3

Minion

linux-node2.example.com

192.168.56.12

CentOS-7.3

 

注意:以下主机简称node1和node2

 

2.2 部署验证

  

1. 在node1和node2上yum安装master/minion端

##在两台机器上安装源
rpm -ivh https://repo.saltstack.com/yum/redhat/salt-repo-latest-2.el7.noarch.rpm

##在node1上安装
yum -y install salt-master salt-minion
rpm -qa|grep salt-master
rpm -qa|grep salt-minion

##在node2上安装
yum -y install salt-minion
rpm -qa|grep salt-minion

  

2. 配置

##配置node1和node2的salt-minion配置文件指向master
[root@linux-node1 salt]# vim /etc/salt/minion
#master: salt       #<== 大概16行,打开注释,改为 master: 192.168.56.11 (注意YAML语法格式)

[root@linux-node2 salt]# vim /etc/salt/minion
#master: salt       #<== 大概16行,打开注释,改为 master: 192.168.56.11 (注意YAML语法格式)

  

3. 启动node1和node2上的master/minion

systemctl start salt-master.service 
systemctl start salt-minion.service

说明:当salt-minion的端启动的时候会将自己的公钥发给salt-master端,公钥会存放在master端的/etc/salt/pki/master/minions_pre/目录下,并以minion端ID命名。所以说如果修改领ID,这里也要将对应的公钥删除重新生成。

   

4. master管理验证

[root@linux-node1 ~]# salt-key       #<== 查看有哪些要被验证管理的minion端
Accepted Keys:
Denied Keys:
Unaccepted Keys:
linux-node1.example.com
linux-node2.example.com
Rejected Keys:
[root@linux-node1 ~]# salt-key -A    #<== 同意所有验证
The following keys are going to be accepted:
Unaccepted Keys:
linux-node1.example.com
linux-node2.example.com
Proceed? [n/Y] Y       
Key for minion linux-node1.example.com accepted.
Key for minion linux-node2.example.com accepted.
[root@linux-node1 ~]# salt-key       #<== 再次查看被管理的主机
Accepted Keys:
linux-node1.example.com
linux-node2.example.com
Denied Keys:
Unaccepted Keys:
Rejected Keys: 

说明:当master通过minion端验证之后会在minion端的/etc/salt/pki/minion目录下生成一个minion_master.pud的文件,这是master端发给minion的master公钥

  

salt-key输出说明:

主机状态

中文解释

Accepted Keys:

已经同意被管理的主机key

Denied Keys:

已经被拒绝的主机key

Rejected Keys:

明确拒绝的key,主接收任何通信

Unaccepted Keys:

未被接受或同意的主机key

 

salt-key常用参数:

参数

解释

-A

同意并接受全部主机

-a

指定接收的主机,支持通配符操作

-D

删除全部已被管理主机(但是不建议这么做)

-d

指定主机,不在管理的指定主机

 

5. 测试是否验证成功(两台机器都反悔True则表示成功)

[root@linux-node1 ~]# salt "*" test.ping
linux-node2.example.com:
    True
linux-node1.example.com:
    True

[root@linux-node1 ~]# salt \* cmd.run "free -m"
linux-node2.example.com:
                  total        used        free      shared  buff/cache   available
    Mem:            976         137         406           6         433         656
    Swap:          1535           0        1535
linux-node1.example.com:
                  total        used        free      shared  buff/cache   available
    Mem:            976         408         110          12         457         367
    Swap:          1535           0        1535

   

命令解释:

salt

\*

cmd.run

free -m

salt

*

test.ping

 

命令(关键字)

目标(*代表所有,单双引号只是为了转义)

模块.方法

参数

 

  

zhaoyulin

发表评论

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