文章目录
- 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的master端默认监听4505和4406
,4505为master和minion认证通信端口,4506为master用来发送命令或接收minion的命令执行返回信息。
当客户端启动后,会主动连接master端注册,然后一直保持该TCP连接,而master通过这条TCP连接对客户端进行控制。如果断开连接,master对客户端将不能进行控制。但是,当客户端检查到连接断开后,会定期向master端请求注册连接。
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
1.配置官网得到仓库地址,获取最新的软件包
2.
或者
启动salt-master
3.ser3minion同样建立仓库(ser4和ser3的配置一样,这里以ser3为例子)
4.在ser2上
再次查看时
5.配置minion
6.
7.在master端做认证
8.master和minion交换公钥的过程
在minion端
9.测试连接
注意:
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
pkg模块
创建文件执行远程命令
在ser3上安装完成
编写远程执行模块
创建模块目录:
# mkdir /srv/salt/_modules
编写模块文件:
# vim /srv/salt/_modules/mydisk.py
def df():
return __salt__['cmd.run']('df -h')
同步模块:
# salt server2 saltutil.sync_modules
1.
几种编写文件的方式
1.
2.
3.
4.如何实现不同节点装不一样的包
(1)
(2)
5.如何更好的对目录进行管理
file模块配置httpd
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.