文章目录

  • SaltStack简介
  • SaltStack的安装
  • SaltStack远程执行
  • 远程执行shell命令
  • 创建文件执行远程命令
  • 编写远程执行模块
  • 几种编写文件的方式
  • file模块配置httpd
  • yaml语法与配置管理


SaltStack简介

saltstack是一个配置管理系统,能够维护预定义状态的远程节点。

saltstack是一个分布式远程执行系统,用来在远程节点上执行命令和查询数据。
saltstack是运维人员提高工作效率、规范业务配置与操作的利器。

Salt的核心功能

  • 使命令发送到远程系统是并行的而不是串行的
  • 使用安全加密的协议
  • 使用最小最快的网络载荷
  • 提供简单的编程接口
  • Salt同样引入了更加细致化的领域控制系统来远程执行,使得系统成为目标不止可以通过主机名,还可以通过系统属性。

Saltstack采用C/S模式,由master和minion构成,master是服务器端minion是客户端。

在master上发送命令给符合条件的minion,minion就会执行相应的命令,master和minion之间是通过ZeroMQ(消息队列进行通信的。

saltstack map盘符 saltstack管理windows_saltstack map盘符


SaltStack的master端默认监听4505和4406,4505为master和minion认证通信端口,4506为master用来发送命令或接收minion的命令执行返回信息。

当客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,而master通过这条TCP连接对客户端进行控制。如果断开连接,master对客户端将不能进行控制。但是,当客户端检查到连接断开后,会定期向master端请求注册连接。

saltstack map盘符 saltstack管理windows_SaltStack_02

saltstack map盘符 saltstack管理windows_apache_03

saltstack map盘符 saltstack管理windows_saltstack map盘符_04

saltstack map盘符 saltstack管理windows_SaltStack_05

SaltStack的安装

官网:https://www.saltstack.com/
设置官方YUM仓库:
# yum install https://repo.saltstack.com/yum/redhat/salt-repo-latest.el7.noarch.rpm
master端设置:
# yum install -y salt-master	#安装master端
# systemctl enable salt-master	#设置master自启动
# systemctl start salt-master	#启动master服务
minion端配置:
# yum install -y salt-minion	#安装minion端
# vim /etc/salt/minion
master: 172.25.0.1		#设置master主机的ip
# systemctl enable salt-minion
# systemctl start salt-minion

saltstack map盘符 saltstack管理windows_客户端_06

saltstack map盘符 saltstack管理windows_apache_07


1.配置官网得到仓库地址,获取最新的软件包

saltstack map盘符 saltstack管理windows_SaltStack_08

2.

saltstack map盘符 saltstack管理windows_SaltStack_09

或者

saltstack map盘符 saltstack管理windows_apache_10


saltstack map盘符 saltstack管理windows_saltstack map盘符_11

启动salt-master

saltstack map盘符 saltstack管理windows_SaltStack_12

saltstack map盘符 saltstack管理windows_客户端_13


3.ser3minion同样建立仓库(ser4和ser3的配置一样,这里以ser3为例子)

saltstack map盘符 saltstack管理windows_客户端_14

saltstack map盘符 saltstack管理windows_apache_15

4.在ser2上

saltstack map盘符 saltstack管理windows_apache_16

saltstack map盘符 saltstack管理windows_apache_17

saltstack map盘符 saltstack管理windows_SaltStack_18

saltstack map盘符 saltstack管理windows_客户端_19

saltstack map盘符 saltstack管理windows_SaltStack_20

saltstack map盘符 saltstack管理windows_apache_21

再次查看时

saltstack map盘符 saltstack管理windows_客户端_22

saltstack map盘符 saltstack管理windows_客户端_23

5.配置minion

saltstack map盘符 saltstack管理windows_客户端_24

saltstack map盘符 saltstack管理windows_apache_25

saltstack map盘符 saltstack管理windows_saltstack map盘符_26

saltstack map盘符 saltstack管理windows_SaltStack_27

6.

saltstack map盘符 saltstack管理windows_客户端_28

saltstack map盘符 saltstack管理windows_客户端_29

7.在master端做认证

saltstack map盘符 saltstack管理windows_SaltStack_30

saltstack map盘符 saltstack管理windows_saltstack map盘符_31

saltstack map盘符 saltstack管理windows_apache_32

saltstack map盘符 saltstack管理windows_SaltStack_33

saltstack map盘符 saltstack管理windows_客户端_34

saltstack map盘符 saltstack管理windows_SaltStack_35

saltstack map盘符 saltstack管理windows_SaltStack_36

8.master和minion交换公钥的过程

saltstack map盘符 saltstack管理windows_apache_37

saltstack map盘符 saltstack管理windows_客户端_38

saltstack map盘符 saltstack管理windows_saltstack map盘符_39

saltstack map盘符 saltstack管理windows_apache_40

saltstack map盘符 saltstack管理windows_apache_41

saltstack map盘符 saltstack管理windows_客户端_42


在minion端

saltstack map盘符 saltstack管理windows_saltstack map盘符_43

saltstack map盘符 saltstack管理windows_saltstack map盘符_44

saltstack map盘符 saltstack管理windows_SaltStack_45

9.测试连接

saltstack map盘符 saltstack管理windows_客户端_46

saltstack map盘符 saltstack管理windows_saltstack map盘符_47


注意:

saltstack map盘符 saltstack管理windows_saltstack map盘符_48

saltstack map盘符 saltstack管理windows_SaltStack_49

SaltStack远程执行

远程执行shell命令

Salt命令由三个主要部分构成:
salt '<target>' <function> [arguments]
target: 指定哪些minion, 默认的规则是使用glob匹配minion id. 
# salt '*' test.ping
Targets也可以使用正则表达式:
# salt -E 'server[1-3]' test.ping
Targets也可以指定列表:
# salt -L 'server2,server3' test.ping
funcation是module提供的功能,Salt内置了大量有效的functions. 
# salt '*' cmd.run 'uname -a'
arguments通过空格来界定参数:
# salt 'server2' sys.doc pkg			#查看模块文档
# salt 'server2' pkg.install httpd
# salt 'server2' pkg.remove httpd
salt内置的执行模块列表:
http://docs.saltstack.cn/ref/modules/all/index.html


saltstack map盘符 saltstack管理windows_SaltStack_50

saltstack map盘符 saltstack管理windows_saltstack map盘符_51

saltstack map盘符 saltstack管理windows_客户端_52

saltstack map盘符 saltstack管理windows_apache_53

saltstack map盘符 saltstack管理windows_SaltStack_54

saltstack map盘符 saltstack管理windows_客户端_55

saltstack map盘符 saltstack管理windows_客户端_56

saltstack map盘符 saltstack管理windows_saltstack map盘符_57

saltstack map盘符 saltstack管理windows_saltstack map盘符_58

saltstack map盘符 saltstack管理windows_saltstack map盘符_59

pkg模块

saltstack map盘符 saltstack管理windows_SaltStack_60

saltstack map盘符 saltstack管理windows_apache_61

创建文件执行远程命令

saltstack map盘符 saltstack管理windows_saltstack map盘符_62


saltstack map盘符 saltstack管理windows_apache_63

saltstack map盘符 saltstack管理windows_SaltStack_64

saltstack map盘符 saltstack管理windows_SaltStack_65

saltstack map盘符 saltstack管理windows_saltstack map盘符_66

saltstack map盘符 saltstack管理windows_apache_67

saltstack map盘符 saltstack管理windows_SaltStack_68

在ser3上安装完成

saltstack map盘符 saltstack管理windows_saltstack map盘符_69

编写远程执行模块

创建模块目录:
# mkdir /srv/salt/_modules
编写模块文件:
# vim /srv/salt/_modules/mydisk.py
def df():
    return __salt__['cmd.run']('df -h')
同步模块:
# salt server2 saltutil.sync_modules

saltstack map盘符 saltstack管理windows_客户端_70


1.

saltstack map盘符 saltstack管理windows_saltstack map盘符_71

saltstack map盘符 saltstack管理windows_SaltStack_72

saltstack map盘符 saltstack管理windows_apache_73

saltstack map盘符 saltstack管理windows_saltstack map盘符_74

saltstack map盘符 saltstack管理windows_客户端_75

saltstack map盘符 saltstack管理windows_客户端_76

saltstack map盘符 saltstack管理windows_客户端_77

saltstack map盘符 saltstack管理windows_SaltStack_78

saltstack map盘符 saltstack管理windows_apache_79

saltstack map盘符 saltstack管理windows_saltstack map盘符_80

saltstack map盘符 saltstack管理windows_saltstack map盘符_81

几种编写文件的方式

1.

saltstack map盘符 saltstack管理windows_saltstack map盘符_82

saltstack map盘符 saltstack管理windows_SaltStack_83

saltstack map盘符 saltstack管理windows_客户端_84

2.

saltstack map盘符 saltstack管理windows_SaltStack_85

saltstack map盘符 saltstack管理windows_apache_86

saltstack map盘符 saltstack管理windows_saltstack map盘符_87

3.

saltstack map盘符 saltstack管理windows_apache_88

saltstack map盘符 saltstack管理windows_SaltStack_89

saltstack map盘符 saltstack管理windows_apache_90

4.如何实现不同节点装不一样的包

saltstack map盘符 saltstack管理windows_saltstack map盘符_91

(1)

saltstack map盘符 saltstack管理windows_客户端_92

saltstack map盘符 saltstack管理windows_SaltStack_93

saltstack map盘符 saltstack管理windows_saltstack map盘符_94

saltstack map盘符 saltstack管理windows_saltstack map盘符_95

saltstack map盘符 saltstack管理windows_saltstack map盘符_96

(2)

saltstack map盘符 saltstack管理windows_客户端_97

saltstack map盘符 saltstack管理windows_apache_98

saltstack map盘符 saltstack管理windows_SaltStack_99

saltstack map盘符 saltstack管理windows_apache_100

saltstack map盘符 saltstack管理windows_SaltStack_101

saltstack map盘符 saltstack管理windows_saltstack map盘符_102

5.如何更好的对目录进行管理

saltstack map盘符 saltstack管理windows_apache_103

saltstack map盘符 saltstack管理windows_客户端_104

saltstack map盘符 saltstack管理windows_SaltStack_105

saltstack map盘符 saltstack管理windows_apache_106

saltstack map盘符 saltstack管理windows_SaltStack_107

saltstack map盘符 saltstack管理windows_apache_108

saltstack map盘符 saltstack管理windows_客户端_109

saltstack map盘符 saltstack管理windows_SaltStack_110

saltstack map盘符 saltstack管理windows_SaltStack_111

saltstack map盘符 saltstack管理windows_saltstack map盘符_112

saltstack map盘符 saltstack管理windows_SaltStack_113

saltstack map盘符 saltstack管理windows_apache_114

saltstack map盘符 saltstack管理windows_saltstack map盘符_115

saltstack map盘符 saltstack管理windows_客户端_116

saltstack map盘符 saltstack管理windows_apache_117

saltstack map盘符 saltstack管理windows_SaltStack_118

file模块配置httpd

saltstack map盘符 saltstack管理windows_SaltStack_119

saltstack map盘符 saltstack管理windows_saltstack map盘符_120

saltstack map盘符 saltstack管理windows_SaltStack_121

saltstack map盘符 saltstack管理windows_saltstack map盘符_122

saltstack map盘符 saltstack管理windows_客户端_123

saltstack map盘符 saltstack管理windows_SaltStack_124


saltstack map盘符 saltstack管理windows_SaltStack_125

saltstack map盘符 saltstack管理windows_客户端_126

saltstack map盘符 saltstack管理windows_apache_127

saltstack map盘符 saltstack管理windows_apache_128

saltstack map盘符 saltstack管理windows_apache_129

saltstack map盘符 saltstack管理windows_SaltStack_130

saltstack map盘符 saltstack管理windows_SaltStack_131

saltstack map盘符 saltstack管理windows_apache_132

saltstack map盘符 saltstack管理windows_客户端_133

saltstack map盘符 saltstack管理windows_apache_134

saltstack map盘符 saltstack管理windows_saltstack map盘符_135

saltstack map盘符 saltstack管理windows_saltstack map盘符_136

saltstack map盘符 saltstack管理windows_客户端_137

saltstack map盘符 saltstack管理windows_客户端_138

saltstack map盘符 saltstack管理windows_saltstack map盘符_139

saltstack map盘符 saltstack管理windows_apache_140

saltstack map盘符 saltstack管理windows_客户端_141

saltstack map盘符 saltstack管理windows_SaltStack_142


saltstack map盘符 saltstack管理windows_apache_143

saltstack map盘符 saltstack管理windows_saltstack map盘符_144

saltstack map盘符 saltstack管理windows_apache_145

saltstack map盘符 saltstack管理windows_客户端_146

saltstack map盘符 saltstack管理windows_SaltStack_147

saltstack map盘符 saltstack管理windows_SaltStack_148

saltstack map盘符 saltstack管理windows_客户端_149

yaml语法与配置管理

规则一: 缩进
Salt需要每个缩进级别由两个空格组成,不要使用tabs。
规则二: 冒号
字典的keys在YAML中的表现形式是一个以冒号结尾的字符串。
my_key: my_value
规则三: 短横杠
想要表示列表项,使用一个短横杠加一个空格。
  - list_value_one
  - list_value_two
创建一个sls文件:
# vim /srv/salt/apache.sls
httpd:                 	# ID声明
  pkg:                  	# 状态声明
    - installed           	# 函数声明
指定主机执行:
# salt server2 state.sls apache
准备Top文件:
# vim /srv/salt/top.sls
base:
  '*':
    - apache
批量执行:
# salt '*' state.highstate
Salt 状态系统的核心是SLS,或者叫SaLt State 文件。
SLS表示系统将会是什么样的一种状态,而且是以一种很简单的格式来包含这些数据,常被叫做配置管理。
sls文件命名:
sls文件以”.sls”后缀结尾,但在调用是不用写此后缀。
使用子目录来做组织是个很好的选择。
 init.sls 在一个子目录里面表示引导文件,也就表示子目录本身, 所以``apache/init.sls`` 就是表示``apache``.
如果同时存在apache.sls 和 apache/init.sls,则 apache/init.sls 被忽略,apache.sls将被用来表示 apache.