CentOs 下安装,master&minion
1.添加epel源
# yum -y install epel
2.安装 master
# yum -y install salt-master
# salt-master的配置文件是/etc/salt/master
配置:
interface: 0.0.0.0 #绑定到本地的0.0.0.0地址
publish_port: 4505 #管理端口,命令发送
user: root #运行salt进程的用户
worker_threads: 5 #salt运行线程数,线程越多处理速度越快,不要超过cpu个数
ret_port: 4506 #执行结果返回端口
pidfile: /var/run/salt-master.pid #pid文件位置
log_file: /var/log/salt/master #日志文件地址
auto_accept: False #自动接收minion的key
# 配置开机启动
# chkconfig salt-master on
# 启动服务
# service salt-master start
3.被管理端安装minion
# yum -y install salt-minion
# salt-minion的配置文件是/etc/salt/minion
# 指定master(salt服务端,主机名或者IP)
master: master
master_port: 4506
user: root
id: slave
acceptance_wait_time: 10
log_file: /var/log/salt/minion
# 配置开机启动
# chkconfig salt-monion
# 启动salt minion
# service salt-minion start
############## 实战1 salt minion 主机名修改 ############
1. salt master 将要修改主机名的机器 -d 掉
2. slat minion 删除key 修改主机名 重启服务
3. slat master 重新认证
############## 实战2 salt master 迁移 #################
1. 打包salt pki路径
2. 新salt master 服务器解包 pki 启动
3. 旧salt master 更新 salt minion 配置(服务端地址)
# 插件
Grains -- 静态采集
Grains 是saltstack组件中非常重要之一,在配置部署时候回经常使用,Grains记录minion的静态信息,比如常用属性,CPU、内存、磁盘、网络信息等。
Minions的Grains信息是Minion启动时采集汇报给Master的
Grains是以 key value形式存储的数据库,可以看做Host的元数据(metadata)
Grains保存着收集到的客户端的详细信息
# 如果slave机器数据变化,grains就过期了
# 在生产环境中需要自定义Grains,可以通过
Minion配置文件
Grains相关模块定义
Python脚本定义
# Pillar -- 加密数据
在SaltStack中主要的作用是存储和定义配置管理中需要的一些数据,比如软件版本号,用户账号密码等,保证敏感数据不被其他minion看到
# Grains 与 Pillar 对比
类型 数据采集方式 应用场景 定义位置
Grains 静态 minion启动时收集 数据查询 目标选择 配置管理 minion
Pillar 动态 master进行自定义 目标选择 配置管理 敏感数据 master
# Python API 调用SaltStack
# 介绍:
/usr/bin/salt默认使用的接口是LocalClient,该接口只能在salt master上使用
[root@master ~]$python
Python 2.7.5 (default, Jul 13 2018, 13:06:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-28)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import salt.client
>>> local = salt.client.LocalClient() #<salt.client.LocalClient object at 0x7f886dbdd850>
>>> local.cmd('*','cmd.run',['hostname'])#向所有minion发送命令
{'slave': 'slave'}
逐条返回结果,local.cmd_iter()
>>> ret=local.cmd_iter('*','test.ping')
>>> ret
<generator object cmd_iter at 0x7f886d455c80>
>>> for i in ret:
... print i
...
{'slave': {'retcode': 0, 'ret': True}}
菲波那切数列
>>> local.cmd('*','test.fib',[10])
{'slave': [[0, 1, 1, 2, 3, 5, 8], 2.1457672119140625e-06]}
检查minion服务器信息
>>> local.cmd('*','cmd.run',['hostname'])
{'slave': 'slave'}
>>> local.cmd('*','cmd.run',['ifconfig'])
>>> local.cmd('*','cmd.run',['crontab -l'])
>>> local.cmd('*','cmd.run',['df -h'])
启停minion的服务,如nginx
>>> local.cmd('*','service.stop',['nginx'])
{'slave': True}
>>> local.cmd('*','service.status',['nginx'])
{'slave': False}
>>> local.cmd('*','service.start',['nginx'])
{'slave': True}
# SaltStack proxy
# Syndic