SaltStack功能:
主要功能:配置管理与远程执行
架构:
基于C/S架构:服务器Master,客户端Minion
工作机制:
- Master和Minion都以守护进程的方式运行
- Master监听配置文件里定义的ret_port(接受minio请求),和publish_port(发布消息)的端口
- 当Minion运行时,它会自动连接到配置文件定义的Master地址ret_port端口进行连接认证
- 当Master和Minion可以正常通信后,就可以进行各种各样的配置管理工作
安装配置:
1.编辑hosts文件或搭建DNS服务器,指向master和node
# vim /etc/hosts192.168.173.153 master.test.com192.168.173.154 node1.test.com
2.设置hostname
[iyunv@master ~]# vim /etc/sysconfig/network #node上同理HOSTNAME=master.test.com
3.安装包注:先安装epel-release
服务端:epel-release salt-master salt-minion
客户端:epel-release salt-minion
4.配置:/etc/salt/minion
服务端&客户端:
master: master的ip
#要地址解析,或用/etc/hosts解析;冒号后有空格
id: 主机名
5.启动服务:
服务端:
[root@localhost ~]# systemctl start salt-master
[root@localhost ~]# systemctl start salt-minion
客户端:systemctl start salt-minion
6.测试:在服务端
查看连接的node:salt-key -L #均未被接纳,unaccepted keys:
建立互信:salt-key -A -y #接纳成功 Accepted keys:
测试通信:salt '*' test.ping #显示True为正常
Master与Minion互信:
Master和Minion上线后与Master端联系,把自己的pubkey发过去,Master接受Minion的公钥后,互信建立完成
密钥管理:
salt-key -h
-L:列出密钥
-a:接受一个密钥
-A:接受全部密钥
-d:删除一个密钥
-D:删除全部密钥
远程执行命令:
salt [options] '<target>' <function> [arguments]
target:指定Minion机器,可以通配符'*'
function:采用python的模块.方法样式
arguments是传递方法的参数
options:
-E:使用正则表达式匹配
-L:使用列表匹配",分隔"
-N:分组匹配,例:salt -N '组名1' test.ping
分组定义在/etc/salt/master中
nodegroups:
组名:'L@主机名1,主机名2' #L@表示列表分组,注意缩进
常用模块,方法:
列出所有模块:salt '*' sys.list_modules
列出模块所有方法:salt '*' sys.list_functions test (test表示模块名)
列出模块帮助:salt '*' sys.doc test
重载模块:salt '*' sys.reload_modules
分发文件:cp.get_file
执行命令:cmd.run
组件:
Grains:
是saltstack的重要组件;存储minion端的基本信息,一般为静态;Grains存储在minion本地,管理员可以在minion端进行grains值的修改
基础命令:
获取minion端所有grains信息:salt '*' grains.items
获取minion端的键值:salt '*' grains.item 键名
匹配minion端执行命令:salt -G 'miminion的键值' cmd.run '命令'
设置grains值:存放到slaver的/etc/salt/grains文件中
单个值设置:salt '*' grains.setval 键名 值
多个值设置:salt '*' grains.setvals "{'键名1':'值1','键名2':'值2'}"
删除自定义的grains:salt '*' grains.delval 键名
注:也可在/etc/salt/minion配置文件中找到grains的进行设置
pillar:
定义与被控主机相关的任何数据,定义好的数据可以被其它组件使用;存储在master端,存放要提供给minion的信息;常用于敏感信息,每个minion只能访问master分配给自己的pillar信息;用于经常动态变化的信息
启用:去掉/etc/salt/master文件中的注释,更改后重启服务
pillar_roots:
base:
- /srv/pillar #pillar_roots默认位置,自己创建
定义pillar数据:/srv/pillar下
pillar执行要一个top.sls的入口文件,采用YAML格式,通过top.sls文件组织其它pillar文件
top.sls文件配置
base: #与pillar_roots中定义一致
'vh02.tedu.cn': #过滤目标,可以定义多个
- data #用于包含.sls,创建同名的.sls文件,或同名目录下的init.sls文件,目录优先级高
data.sls文件配置:
appname: 名字
flow:
键名: 键值
命令:
同步至minion:salt '*' saltutil.refresh_pillar
获取pillar全部数据:salt '*' pillar.items
获取指定数据:salt '*' pillar.item 指定内容
YAML语法:
结构通过空格展示
项目使用"-"表示
键值对使用":"表示
规则:
使用一个固定的缩进风格表示数据层级结构关系
一般每个缩进级别由两个空格组成
不要使用tab
{}表示字典
-表示列表
:-后有空格